西安自助式建设网站—opencv 截取轮廓中的图像—

2021-01-31 00:54| 发布者: | 查看: |

opencv 获取轮廊中的图像——进行PS中应用蒙版抠图的功效 #xff08;Using Opencv extract area circled by contour #xff09; 顺手秀了一把英语~~ 我常常感慨 #xff0c;假如PhotoShop假如开源系统系统软件的多么的好呀 #xff0c;这得造福多少钱从事计算机视觉效果实际效果的码农们啊~ 即然没动源&a…


opencv 获取轮廊中的图像——进行PS中应用蒙版抠图的功效 Using Opencv extract area circled by contour

顺手秀了一把英语~~

我常常感慨 假如PhotoShop假如开源系统系统软件的多么的好呀 这得造福多少钱从事计算机视觉效果实际效果的码农们啊~ 即然没动源 那麼就本身探索吧 期待从这篇博闻一开始我能一步歩把PS中的功效给融解出来 热情热烈欢迎改正沟通交流沟通交流

大伙儿十分非常容易用findContours()涵数将图像中的轮廊获得出来 但是并没有将轮廊所包围着着的图像输出的涵数 以下是许多个有相仿功效的涵数

cvimageroi() 得到包围着着ROI 很很感兴趣地域 的矩形框框地域 可以马上把轮廊点集作为关键主要参数给进去接着返回包围着着这一轮廊的最好矩形框框点集 接着再用Mat的组成员涵数Mat(Rec)把这一地域获得出来。缺憾的是那般仅有获得矩形框框地域 无法获得不规律性地域。
[标识:內容1]

boundingRect() 这一紧跟面一样一个是一样的功效 也是得到矩形框框地域。


进入主题风格

最开始将原照相灰度值值化 二值化 接着获得轮廊 进行消除、去噪处理之后用drawContours()涵数把轮廊添充为乳乳白色。具体做法是

Mat hole(res.size(), CV_8U, Scalar(0)); //新建一个灰灰黑色的蒙版镀层

cv::drawContours(hole, contours1, -1, Scalar(255), CV_FILLED); //在蒙版镀层上 将轮廊里面的房间内室内空间用乳乳白色清楚度添充

之后将原照用copyTo()涵数累加到蒙版镀层上 就节节胜利了。

#include opencv2/imgproc.hpp #include opencv2/highgui.hpp #include iostream using namespace cv;using namespace std;void main() { Mat original imread( D:\\res.png namedWindow( My original imshow( My original , original); Mat gray original; cv::cvtColor(gray, gray, CV_RGB2GRAY);//灰度值值化 int thresh_size (100 / 4) * 2 //响应式二值化阈值 adaptiveThreshold(gray, gray, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY_INV, thresh_size, thresh_size / 3); morphologyEx(gray, gray, MORPH_OPEN, Mat());//样子学开测算去噪点 vector vector Point contours; cv::findContours(gray, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); //找轮廊 vector vector Point contours1; for (int i i contours.size(); i) { if (contours[i].size() 200)//将比较小的轮廊除去掉 { contours1.push_back(contours[i]); } } /*可以加上以下功效*/ //vector vector Point contours2; //vector Point approx_poly;//存放节点 //for (int i i contours1.size(); i) //{ //double eps contours1[i].size()*0.08;//高精密度 //approxPolyDP(contours1[i], approx_poly, eps, true);//用此外一条节点较少的曲线图图来挨近一条曲线图图或者一个多边合作协作形 //if ((approx_poly.size() ! 4) || (!isContourConvex(approx_poly)))//获得唯一4个节点的轮廊和凸多边合作协作形 //{ // continue; //} //else { //contours2.push_back(contours1[i]); //} //} Mat hole(gray.size(), CV_8U, Scalar(0)); //蒙版镀层 cv::drawContours(hole, contours1, -1, Scalar(255), CV_FILLED); //在蒙版镀层上 用乳乳白色清楚度添充轮廊 namedWindow( My hole imshow( My hole , hole); Mat crop(original.rows, original.cols, CV_8UC3); original.copyTo(crop, hole);//将原照相拷贝进蒙版镀层 namedWindow( My warpPerspective imshow( My warpPerspective , crop); waitKey(0);}




原文中联接: dtmao.cc/news_show_1040317.shtml

<
>

 
QQ在线咨询
售前咨询热线
18720358503
售后服务热线
18720358503
返回顶部