OpenCV4图像处理--图像像素通道分离与合并

本文介绍了如何使用OpenCV库进行像素通道的分离与合并操作,包括利用split和merge API对RGB图像进行通道处理。同时,讲解了如何定义和使用ROI(感兴趣区域)来选取图像的特定部分,并展示了对ROI进行操作的例子,如矩形选择和位运算。这些基本操作在图像处理和计算机视觉领域中有着广泛应用。
摘要由CSDN通过智能技术生成

像素通道分离

  • API:split
  • 将一个三通道的图像,通过split API进行通道分离,存储到一个vector中;
	Mat src = imread("F:/code/images/test.png");
	if (src.empty()) {
		printf("fail to read");
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);

	//通道分离
	vector<Mat> mv;
	split(src, mv);
	int size = mv.size();
	printf("channels:%d", size);
	imshow("blue channel", mv[0]);
	imshow("green channel", mv[1]);
	imshow("red channel", mv[2]);

像素通道合并

  • API: merge
  • 通过分离得到的每一个通道,都可以进行像素修改等操作,然后可以通过 merge API将分离后的各通道进行合并
	//通道合并
	mv[2] = Scalar(0);
	Mat dst;
	merge(mv, dst);
	imshow("merge", dst);

ROI :感兴趣区域

  • 通过设置矩形,获取图像的感兴趣区域
  • PS: sub = src(roi) 为浅拷贝,sub和src(roi)为相同内存地址,因此对于sub的修改会同步到src中;sub = src(roi).clone()为深拷贝,对应不同的内存空间,因此不会相互影响
	//ROI
	Rect roi;
	roi.x = 100;
	roi.y = 100;
	roi.width = 250;
	roi.height = 250;
	
	//Mat sub = src(roi);
	Mat sub = src(roi).clone();
	bitwise_not(sub, sub);
	rectangle(src, roi, Scalar(0, 255, 0), 1, LINE_AA);
	imshow("sub", sub);
	imshow("input", src);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值