栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Opencv 掩膜操作原理与实现 C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Opencv 掩膜操作原理与实现 C++

学习掩膜操作主要是为了截取出有用的部分,为后续的机器学习,模型训练提供准备样本

为提取红绿灯部分,需要知道交通信号灯所在坐标,确定坐标,所用软件为画图:

代码部分重点介绍掩膜的或运算,彩色部分和黑白的图像混合时,遇到黑色则置为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;
}

最终得到效果:红色信号灯的部分悉数被截取

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号