
一、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)异或
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)