OPENCV-4 学习笔记

OPENCV-4 学习笔记

ROI—设定感兴趣的区域(region of interest)

定义:

Mat imageROI;  
//方法一:通过Rect指定矩形区域 
imageROI=image(Rect(500,250,logo.cols,logo.rows))
//方法二  指定感兴趣行或列的范围(Range)
imageROI=srcImage3(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));  

利用ROI将一幅图加到另一幅图的指定位置

bool ROI_AddImage()  
{  //【1】读入图像  Mat srcImage1= imread("1.jpg");  Mat logoImage= imread("2.jpg");  if(!srcImage1.data ) { printf("读取srcImage1错误~! \n"); return false; }  if(!logoImage.data ) { printf("读取logoImage错误~! \n"); return false; }  //【2】定义一个Mat类型并给其设定ROI区域  Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows));  //【3】加载掩模(必须是灰度图)  Mat mask= imread("2.jpg",0);  //【4】将掩膜拷贝到ROI  logoImage.copyTo(imageROI,mask);  //【5】显示结果  namedWindow("<1>利用ROI实现图像叠加示例窗口");  imshow("<1>利用ROI实现图像叠加示例窗口",srcImage1);  return true;  
}  

初级图像混合——线性混合操作

公式:

实现函数:addWeighted函数

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
  • dst = src1[I]*alpha+ src2[I]*beta + gamma;

    bool LinearBlending()
    {
    //【0】定义一些局部变量
    double alphaValue = 0.5;
    double betaValue;
    Mat srcImage2, srcImage3, dstImage;

       //【1】读取图像 ( 两幅图片需为同样的类型和尺寸 )  srcImage2= imread("mogu.jpg");  srcImage3= imread("rain.jpg");  if(!srcImage2.data ) { printf("你妹,读取srcImage2错误~! \n"); return false; }  if(!srcImage3.data ) { printf("你妹,读取srcImage3错误~! \n"); return false; }  //【2】做图像混合加权操作  betaValue= ( 1.0 - alphaValue );  addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage);  //【3】创建并显示原图窗口  namedWindow("<2>线性混合示例窗口【原图】 by浅墨", 1);  imshow("<2>线性混合示例窗口【原图】 by浅墨", srcImage2 );  namedWindow("<3>线性混合示例窗口【效果图】 by浅墨", 1);  imshow("<3>线性混合示例窗口【效果图】 by浅墨", dstImage );  return true;  
    

    }

分离颜色通道

  • split函数—将一个多通道数组分离成几个单通道数组
    void split(const Mat& src, Mat*mvbegin);
    void split(InputArray m,OutputArrayOfArrays mv);
    //第一个参数,InputArray类型的m或者const Mat&类型的src,填我们需要进行分离的多通道数组。
    //第二个参数,OutputArrayOfArrays类型的mv,填函数的输出数组或者输出的vector容器。
  • merge函数—将多个数组组合合并成一个多通道的数组。
    它通过组合一些给定的单通道数组,将这些孤立的单通道数组合并成一个多通道的数组,从而创建出一个由多个单通道阵列组成的多通道阵列
    void merge(const Mat* mv, size_tcount, OutputArray dst)
    void (InputArrayOfArrays mv,OutputArray dst)

创建轨迹条——createTrackbar函数

int createTrackbar(conststring& trackbarname, conststring& winname,int* value, int count, TrackbarCallback onChange=0,void* userdata=0); //创建轨迹条  
createTrackbar("对比度:", "【效果图窗口】",&g_nContrastValue,  
300,ContrastAndBright );// g_nContrastValue为全局的整型变量,ContrastAndBright为回调函数的函数名(即指向函数地址的指针) 

获取当前轨迹条的位置——getTrackbarPos函数

int getTrackbarPos(conststring& trackbarname, conststring& winname);  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue --- mintUI中Swipe(轮播图)的使用

引入 // main.js // 导入包 import { Swipe, SwipeItem } from mint-ui// 注册 Vue.component(Swipe.name, Swipe); Vue.component(SwipeItem.name, SwipeItem);放在需要显示的位置 // HomeContainer.vue(首页 -> 组件) <template><div><!-- 轮播图区域 --…

前端换行显示,后端返回br

转载于:https://www.cnblogs.com/lml-lml/p/9597547.html

MySql随笔part3 表操作

一:什么是表 表(table): 表似一种结构化的文件,可用来存储某种特定类型的数据.表中的一条记录有对应的标题,标题称之为表的字段 二:创建表 1 create table table_name( 2 字段名1 类型[(宽度) 约束条件], 3 字段名2 类型[(宽度) 约束条件], 4 字段名3 类型[(宽度) 约束条件] 5 …

OPENCV-5 学习笔记

OPENCV-5 学习笔记 线性滤波 方框滤波——boxblur函数均值滤波&#xff08;邻域平均滤波&#xff09;——blur函数高斯滤波——GaussianBlur函数中值滤波——medianBlur函数双边滤波——bilateralFilter函数 关于滤波和模糊—–滤波可分低通滤波和高通滤波两种。而高斯滤波是…

node --- 监听文件变化(静态、动态、子进程)

静态版本:监听的文件名写死了 // watcher.js use strict const fs require(fs); fs.watch(target.txt, () > console.log(File changed!)); console.log(Now watching target.txt for changes...);命令行启动 node watcher.js动态版本:在命令行输入需要监听的文件名. pr…

redis学习总结

一、redis工作流程 1、把redis安装到Linux上 2、配置redis.conf文件 使之可以后台运行 3、根据项目需求添加相应的jar包 4、调用相应的api实现项目需求 二、redis相关知识 1、redis是缓存数据库&#xff0c;为了减少对关系型数据库的访问消耗&#xff0c;可以把常用的数据添加…

OPENCV-6 学习笔记

OPENCV-6 学习笔记 边缘检测 步骤&#xff1a; 滤波增强检测 canny算子—Canny 的目标是找到一个最优的边缘检测算法 评价标准&#xff1a; 1.低错误率: 标识出尽可能多的实际边缘&#xff0c;同时尽可能的减少噪声产生的误报。 2.高定位性: 标识出的边缘要与图像中的实…

es6 --- Promise封装读取文件操作

Promise: es6中为了解决回调地狱问题而产生的 Promise的参数 Promise的参数是一个函数.每个Promise在实例化时,都会立即执行参数里的函数 const p new Promise(()>{console.log(1); })// 解释了上面的第2条Promise参数的参数 Promise的参数(函数),默认有2个参数(resol…

匿名函数

匿名函数&#xff1a;lambda 函数 语法&#xff1a; lambda 参数1, 参数2 : 表达式 表达式即为返回值 例&#xff1a; result &#xff08;lambda x, y: xy)(1.2) print(result) 例2&#xff1a; newFunc lambda x,y : xy print(newFunc(1,2) 例3&#xff1a; result sorted…

hdu-6165(tarjan+topusort)

题意&#xff1a;一个有向图&#xff0c;无自环&#xff0c;无重边&#xff0c;让你判断这个图内的任意两点是否有路&#xff1b; 解题思路&#xff1a;首先&#xff0c;判断两个点是否可达一般用出入度来判断&#xff0c;如果在拓扑排序中同时有两个及以上入度同时为零的点&am…

OPENCV-7 学习笔记

OPENCV-7 学习笔记 转换图像尺寸 resize函数。这是最直接的方式&#xff0c;yrUp( )、pyrDown( )函数。即图像金字塔相关的两个函数&#xff0c;对图像进行向上采样&#xff0c;向下采样的操作。 图像金字塔 类似于金字塔的形状&#xff0c;将原始图像以金字塔形状的分辨率…

杂项:E-Learning

ylbtech-杂项&#xff1a;E-Learning1.返回顶部 1、E-Learning&#xff1a;英文全称为&#xff08;Electronic Learning&#xff09;&#xff0c;中文译作“数字&#xff08;化&#xff09;学习”、“电子&#xff08;化&#xff09;学习”、“网络&#xff08;化&#xff09;学…

css --- flex布局的应用(between)

between 想把发布时间放在左边,点击放在右边 页面结构如下: 可以看到发布时间和点击是在类 .mui-ellipsis 下.使用css3的 flex 布局中的: space-between .mui-ellipsis{display: flex;justify-content: space-between; }

WeUI

介绍&#xff1a; WeUI是微信设计团队为微信网站开发量身定做的微信类UI界面&#xff0c;旨在改善和规范微信用户体验。包括组分如button&#xff0c;cell&#xff0c;dialog&#xff0c;progress&#xff0c;toast&#xff0c;article&#xff0c;actionsheet&#xff0c;icon…

php中的json

php中的json函数主要有三个&#xff1a; 函数描述json_encode()对变量进行 JSON 编码json_decode对 JSON 格式的字符串进行解码&#xff0c;转换为 PHP 变量json_last_error返回最后发生的错误 认识前提&#xff1a; {}&#xff0c;花括号代表包装的是一个对象数据&#xff0…

vue --- 全局配置过滤函数,使用moment函数来格式化时间

效果1 YYYY-MM-DD 效果2 YYYY-MM-DD HH:mm:ss 配置注意事项 由于时间格式化,在大多数页面中都会用到,因此建议配置在全局中 使用moment函数 -> http://momentjs.cn/ npm 安装 # 命令行 cnpm i moment -S在全局中配置 // main.js import moment from momentVue.f…

2018ICPC南京赛区网络赛J Sum(素数筛+找规律)

素数筛链接&#xff1a;https://blog.csdn.net/dl962454/article/details/76595623 【题意】 f(i)&#xff1a;能拆成两个数的乘积&#xff0c;并且这两个数要求没有平方因子&#xff0c;并且两个数的位置互换算两种方案。 最后求f(1)f(2)f(3)...f(n&#xff09;。 【解题思路】…

[UE4]C++中extern关键字浅谈

变量声明和变量是有区别的 extern int i; //只是声明i而非定义i int j; //声明而且还定义了j 任何一个显式初始化的声明都将成为定义&#xff0c;而不管有没有extern&#xff0c;extern语句一旦变量赋予了初始值就变成了定义。 extern double pi3.1415926; //定义 stat…

PHP 计算两个两个文件的相对路径

例&#xff1a; a‘/a/b/c/d/e.php′;a = ‘/a/b/c/d/e.php’; b ‘/a/b/12/34/c.php’; 二者的相对路径结果为&#xff1a;/a/b/12/34/../../c/d/e.php //计算出$b相对于$a的相对路径: function getRelativePath($a,$b){$returnPath array(dirname($b));$arrA explode(…

vue --- 使用vue-router获取带参数的路由

希望的效果如下: 2个路由: 点击如下 步骤. 使用 router-link 来指定路由路径在router.js中指定 路径的 事件处理函数(对应的组件)创建对应的组件 router-link 找到一个区别各个列表的属性(id),将其作为参数传递到路由中to是vue-router中用来绑定路由的属性由于需要进行计…