学习掩膜操作主要是为了截取出有用的部分,为后续的机器学习,模型训练提供准备样本
为提取红绿灯部分,需要知道交通信号灯所在坐标,确定坐标,所用软件为画图:
代码部分重点介绍掩膜的或运算,彩色部分和黑白的图像混合时,遇到黑色则置为0,即黑色,遇到白色则置为1,即彩色图像原本的颜色:
下面展示一些 内联代码片。
#include#include #include #include #include #include #include using namespace std; using namespace cv; //掩膜操作 int main() { Mat image, mask; Rect r1(5, 130, 90, 50);//x,y,rectangel 大小 Rect r2(173, 130, 50, 50); Rect r3(285, 130, 90, 50); Mat img1, img2, img3, img4; image = imread("C:/Users/WM202/Pictures/4.jpg");//读取对象操作的图片 mask = Mat::zeros(image.size(), CV_8UC1);//定成黑色 //对目标区域进行筛选,定成白色 mask(r1).setTo(255); mask(r2).setTo(255); mask(r3).setTo(255); //进行或运算 原图白色的部分为1 黑色部分为0,彩色部分图形加入填充 img1 = image(r1);//截取原图形 矩形部分 image.copyTo(img2, mask);//放入黑色背景 image.copyTo(img3); img3.setTo(0, mask); //展示处理过后的图片 imshow(" Original Image ", image); imshow("img2", img2); waitKey(); return 0; }
最终得到效果:红色信号灯的部分悉数被截取



