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);

OPENCV-4 学习笔记相关推荐

  1. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

  2. 【计算机视觉】opencv入门学习笔记Part.1

    [计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...

  3. 【OpenCV入门学习笔记2】:Mat对象

    b站:https://www.bilibili.com/video/BV1uW411d7Wf?p=5 我在b站的学习笔记和实验代码的整理如下: 示例代码: Matdemo //------------ ...

  4. opencv进阶学习笔记14:分水岭算法 实现图像分割

    基础版学习笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 分水岭算法原理 分水岭算法 ...

  5. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

  6. opencv进阶学习笔记12:轮廓发现和对象测量

    基础版笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 轮廓发现 1轮廓发现介绍 基础 ...

  7. opencv进阶学习笔记11:cannny边缘检测,直线检测,圆检测

    基础版笔记传送门 python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) cannny边缘检测 基础版边 ...

  8. opencv进阶学习笔记10:图像金字塔和图像梯度

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 图像金字塔 变小 变大 原理 ...

  9. opencv进阶学习笔记8:模板匹配

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模板匹配原理 模板匹配(Te ...

  10. opencv进阶学习笔记7:直方图,直方图均衡化,直方图比较,直方图反向投影

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 直方图基础讲解: opencv学 ...

最新文章

  1. 使用GIF(仅限Delphi2007)
  2. Hibernate- 子查询
  3. php扇形分布图,PHP制作3D扇形统计图以及对图片进行缩放操作实例
  4. Flask发送邮件,最基础
  5. Ubuntu 升级npm 以及安装cross-env 过程中遇到的问题
  6. 采用加密技术进行数据保护的5大优势
  7. 【安卓开发 】Android初级开发(零)各种布局
  8. windows启动管理器_必备的9个Windows设置技巧,可以将Windows 10的性能大幅提高
  9. Winform DataGridView中利用WebClient异步加载显示网络地址的图片
  10. Cityengine, 3ds MAX, FME
  11. UVA13029 Emoticons【文本处理】
  12. iOS 横竖屏适配 ---masonry
  13. 区块链专利正从量向质转变 智慧金融、医疗健康和能源三领域质量最高
  14. 计算机管理的事件id,事件ID6009,6006检测电脑开关机时间
  15. 树莓派系列(十五):使用英特尔神经计算棒2(NCS2)
  16. 『辞旧迎新』一个只会写Bug的Coder年终总结
  17. C# 操作现有Word表格详细教程
  18. BUUCTF [GYCTF2020] Blacklist
  19. HTML怎么把图片颜色加深,怎么把Photoshop的图片整体颜色加深?
  20. 备战第十二届蓝桥杯电子类《EDA设计与开发》国赛

热门文章

  1. golang 捕获堆栈信息_【网络数据安全】为什么时间戳对于数据包捕获很重要
  2. layui中table监听单元格_layui table表格 监听头删除不请求后台
  3. pc端jquery左右按钮控制带缩略图的图片切换代码_Web开发实用的图片预览插件,简单零依赖——PhotoSwipe...
  4. python波峰波谷算法_波动均分算法
  5. java有 号_JAVA揭竿而起总要有名号
  6. 网关和路由器的区别_5G工业路由器与5G DTU的区别介绍详解
  7. Python之爬虫-段子网
  8. elementUI vue table status的状态列颜色变化和操作列状态显示(停用, 启用)
  9. springcloud注册中心eureka
  10. 线程的基本协作和生产者消费者