当前位置: 首页 > news >正文

【OpenCV】图像通道合并与分离,ROI

        介绍可以实现图像通道合并与分离的API,这只是一种方式,后续还会介绍其他的合并与分离方法,以及ROI区域截取的方法。相关API:

  • split()

  • merge()

  • Mat对象()

代码:

#include "iostream"
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int main(int argc, char *argv)
{Mat src = imread("C:/Users/Administrator/Desktop/Zooey.png");if (src.empty()){cout << "could not find image file" << endl;return -1;}namedWindow("input", WINDOW_AUTOSIZE);//【通道分离】vector<Mat> mv;split(src, mv);	//通道分离API,这里可以看成将一幅图像按通道分成了三幅图像。cout << "the size of mv:" << mv.size() << endl;	//容器mv的大小,为3,因为里面存有3个mat对象。//显示这三幅图像imshow("blue channel", mv[0]);imshow("green channel", mv[1]);imshow("red channel", mv[2]);//【通道合并】mv[2] = Scalar(0);	//将红色通道的值归0Mat dst;merge(mv, dst);	//通道合并API,三幅图合并为一幅imshow("red=0", dst);//【ROI(region of interest),即感兴趣区域】//用Rect定义一个范围,后续来截取这个范围的内容Rect roi;roi.x = 100;roi.y = 100;roi.width = 250;roi.height = 200;//在原图上画出范围rectangle(src, roi, Scalar(255, 255, 0), 1, 8);//截取,获得一个Mat对象Mat sub = src(roi);//注意:此时截取部分sub跟原图src中对应位置的内容是同一个东西,即修改sub,src中对应位置的内容也会改变。Mat sub = src(roi).clone();这种方式,就可以将sub和src之间的联系切断。//为了验证上述所说的联系,对截取范围取反bitwise_not(sub, sub);//显示roi图与原图imshow("roi", sub);imshow("input", src);waitKey(0);destroyAllWindows();return 0;
}

说下需要注意的点吧:

  • 通道分离、合并可以看成根据通道进行图片的分离与合并,一幅三通道的图片,经过拆分,每个通道形成一幅图片,即形成三幅图片。合并同理,对应三个通道的三幅图片合并成一幅图片。合并后的图片每个像素有三通道,拆分的三幅图片,每幅图的每个像素只有一个通道。代码中,图片对应mat对象。

  • ROI实际上就是对我们想要的区域进行截取。注意截取后的mat对象跟原mat对象之间的关系就好,这个注释中已经说明。

演示:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • php 使用phpoffice导出导出excel
  • 二十七篇:未来掌控:嵌入式系统的革命性进展
  • Spring Boot 3.3 正式发布,王炸级更新,应用启动速度直接起飞!
  • linux系统——终止进程命令
  • Improving Diffusion Models for AuthenticVirtual Try-on in the Wild # 论文阅读
  • 翻译《The Old New Thing》- The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag
  • pillow学习6
  • LeetCode题练习与总结:从中序与后序遍历序列构造二叉树--106
  • amis中 InputTable Combo InputKV/InputKVS 区别
  • 数据库DCL语句
  • ES基础概念
  • freertos串口DMA队列发送卡死
  • Java的函数式接口和 Lambda 表达式
  • ICML 2024 Mamba 论文总结
  • Vue3判断变量和对象不为null和undefined
  • [译]Python中的类属性与实例属性的区别
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • axios 和 cookie 的那些事
  • classpath对获取配置文件的影响
  • Effective Java 笔记(一)
  • Java比较器对数组,集合排序
  • JS专题之继承
  • NSTimer学习笔记
  • Odoo domain写法及运用
  • oldjun 检测网站的经验
  • windows下如何用phpstorm同步测试服务器
  • 安卓应用性能调试和优化经验分享
  • 翻译--Thinking in React
  • ​卜东波研究员:高观点下的少儿计算思维
  • #pragma 指令
  • (11)MSP430F5529 定时器B
  • (2)STL算法之元素计数
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (39)STM32——FLASH闪存
  • (9)目标检测_SSD的原理
  • (Python第六天)文件处理
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (独孤九剑)--文件系统
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (理论篇)httpmoudle和httphandler一览
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)visual stdio 书签功能介绍
  • (转)人的集合论——移山之道
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • **PHP二维数组遍历时同时赋值
  • .apk文件,IIS不支持下载解决
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net Core 中间件验签
  • .NET Standard 的管理策略