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

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

  • split()

  • merge()

  • Mat对象()

代码:

cpp 复制代码
#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);	//将红色通道的值归0
	Mat 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对象之间的关系就好,这个注释中已经说明。

演示:

相关推荐
锋行天下4 小时前
公司内网部署大模型的探索之路
前端·人工智能·后端
背心2块钱包邮6 小时前
第7节——积分技巧(Integration Techniques)-代换积分法
人工智能·python·深度学习·matplotlib
无心水6 小时前
【分布式利器:大厂技术】4、字节跳动高性能架构:Kitex+Hertz+BytePS,实时流与AI的极致优化
人工智能·分布式·架构·kitex·分布式利器·字节跳动分布式·byteps
阿正的梦工坊6 小时前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
湘-枫叶情缘6 小时前
人脑生物芯片作为“数字修炼世界”终极载体的技术前景、伦理挑战与实现路径
人工智能
Aaron15886 小时前
侦察、测向、识别、干扰一体化平台系统技术实现
人工智能·fpga开发·硬件架构·边缘计算·信息与通信·射频工程·基带工程
懷淰メ6 小时前
【AI加持】基于PyQt5+YOLOv8+DeepSeek的水体污染检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·检测系统·deepseek·水体污染
维维180-3121-14556 小时前
作物模型的未来:DSSAT与机器学习、遥感及多尺度模拟的融合
人工智能·生态学·农业遥感·作物模型·地理学·农学
阿杰学AI7 小时前
AI核心知识38——大语言模型之Alignment(简洁且通俗易懂版)
人工智能·安全·ai·语言模型·aigc·ai对齐·alignment
xier_ran7 小时前
关键词解释:对比学习(Contrastive Learning)
人工智能·深度学习·学习·机器学习·对比学习