OpenCV中使用面具等非矩形图像
来源:互联网 发布:淘宝浏览单app有哪些 编辑:程序博客网 时间:2024/04/29 05:55
在《OpenCV实例精解》一书中,有一个识别人脸然后加上面具的例子,刚开始看的时候就有一个疑惑,面具的图像是矩形的,糊到脸上要怎么使用掩膜呢。后来发现例子里面用的方法很巧妙,这里重新把面具处理部分的代码总结一下:
Mat faceMaskSmall = imread("facemask.jpg"); if ( !faceMaskSmall.data ) { cerr << "Error loading mask image. Exiting!" << endl; } imshow("faceMaskSmall", faceMaskSmall); Mat grayMaskSmall, grayMaskSmallThresh, grayMaskSmallThreshInv; Mat maskedFace, maskedFrame; cvtColor(faceMaskSmall, grayMaskSmall, CV_BGR2GRAY); //面具图像中大于200的像素设为0,也就是面具部分为非零,周围为零 threshold(grayMaskSmall, grayMaskSmallThresh, 250, 255, CV_THRESH_BINARY_INV); imshow("grayMaskSmallThresh", grayMaskSmallThresh); //把src里面每一个元素都倒过来,放到dst里面,0变255,255变0 bitwise_not(grayMaskSmallThresh, grayMaskSmallThreshInv); //imshow("grayMaskSmallThreshInv", grayMaskSmallThreshInv); //grayMaskSmallTreshInv作为掩膜,是控制前面两个参数的与的结果 //只有掩膜里面的值为非零时,这两个参数才做与运算 //这里的运算结果就是只留下了中间面具部分非零,周围部分变为零 bitwise_and(faceMaskSmall, faceMaskSmall, maskedFace, grayMaskSmallThresh); imshow("maskedFace", maskedFace); //这里的结果是识别出来的脸变为零,只有周围部分非零 bitwise_and(frameROI, frameROI, maskedFrame, grayMaskSmallThreshInv); //把面具和背景加在一起,结果放在摄像机图像的人脸部分中
0 0
- OpenCV中使用面具等非矩形图像
- C#中使用OpenCV等库进行图像处理
- C#中使用OpenCV等库进行图像处理
- OpenCV实现从图像中选择矩形区域并保存
- 【OpenCV】通过鼠标在图像中绘制RotatedRect旋转矩形
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- opencv-- 使用鼠标绘制矩形并截取和保存矩形区域图像
- OpenCV学习笔记(18):在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- OpenCv学习笔记(六):使用opencv画线、矩形、椭圆、多边形线、多边形体等
- 使用OpenCV在图片中画矩形框
- 在图像上画矩形 opencv
- opencv截取矩形框中的图像
- OpenCV鼠标绘制矩形和截取图像的矩形区域
- opencv鼠标绘制矩形和截取图像的矩形区域
- 使用OpenCV从视频中捕获图像
- 图像识别:Android中使用OpenCV
- 如何解决gerrit遇到的安装问题系列
- C/C++中const关键字
- ArrayList的迭代器源码分析
- Android 隐藏键盘
- scp本地和远程文件上传/下载
- OpenCV中使用面具等非矩形图像
- 【bzoj1257】[CQOI2007]余数之和sum
- 支持向量机
- 数值策划入门指南(一):做数值就是做体验
- 常见字符编码详解ANSI,UTF-8,UCS,GBK,GB2312,BIG5
- <META http-equiv=Content-Type content="text/html; charset=gb2312">
- 从svn上下载源码
- 内部类向上转型为接口
- 在myeclipse 中调试 地址中 去除 项目 名称