004-OpenCV

004-OpenCV,第1张


一、bitwise_not(输入,输出,带mask *** 作)图像取反:非

其中mask:输入参照mask像素值取反,当像素值全为0不对输入进行取反 *** 作放到输出中,所以输出全是0即为全黑色图像,当mask不为0时才对输入进行取反,取反的值放到输出中。


代码演示:

1.当mask不为0时

	Mat m1;
	Mat mask = Mat::ones(src.size(), CV_8UC1);
	bitwise_not(src, m1,mask);
	imshow("bitwise_not", m1);

输出结果:

2.设置mask区域左上角四分之一区域不为0,其余区域全为0

代码演示:

Mat m1;
	Mat mask = Mat::zeros(src.size(), CV_8UC1);//创建一个全黑和输入一样size的mask区域
	int w = src.cols/2;
	int h = src.rows/2;
	for (int row = 0; row < h; row++) {
		for (int col = 0; col < w; col++)
			mask.at(row, col) = 255;
	}//一行一行遍历一半mask区域像素为255
	bitwise_not(src, m1,mask);
	imshow("bitwise_not", m1);

输出结果:

 


二、 bitwise_and(输入1,输入2,输出,mask)与 *** 作

代码演示:

for (int row = 32; row < 194; row++) {
		for (int col = 54; col < 222; col++)
			mask.at(row, col) = 255;
	}
	bitwise_not(src, m1,mask);
//与 *** 作
	Mat m2;
	bitwise_and(src, src, m2, mask);
	imshow("bitwise_and", m2);

输出结果:


三、 bitwise_or(输入1,输入2, 输出, mask)或 *** 作

代码演示:

	Mat mask = Mat::zeros(src.size(), CV_8UC1);
	Mat mask2 = Mat::zeros(src.size(), CV_8UC1);
	for (int row = 32; row < 194; row++) {
		for (int col = 54; col < 222; col++){
			mask.at(row, col) = 122;
		mask2.at(row, col) = 0;
	}
}//定义两个mask区域一个设为0一个不为0
Mat m3;
	bitwise_or(mask, mask2, m3);//将两个区域进行或 *** 作
	imshow("bitwise_or", m3);

输出结果:

 

   

四、 bitwise_xor(输入1,输入2,输出, mask)异或

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/577818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-11
下一篇2022-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存