温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Opencv怎么改变轮廓外背景颜色

发布时间:2021-05-26 11:24:38 来源:亿速云 阅读:314 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关使用Opencv怎么改变轮廓外背景颜色,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先,头文件,写的比较多,没用的可以自己去除

#include <opencv2/core/core.hpp>  #include<opencv2/highgui/highgui.hpp>  #include"opencv2/imgproc/imgproc.hpp"  #include <iostream> #include <fstream> #include <opencv2/opencv.hpp>  //命名空间 using namespace cv; using namespace std;
//图片数据名字,原图,灰度图,二值图,直方图 Mat src,src_gray,dst,src_equ; //声明一个函数,建立滑动条 static void on_trackbar(int, void*);

主函数

int main(int argc, char** argv) {   //图片读入   src = imread("D:\\PersonWork\\OpenCV\\program\\picture data\\0400.bmp");   //判断是否存在   if (!src.data)   {     cout << "Image no find,error!" << endl;   }   //灰度转换   cvtColor(src,src_gray, CV_BGR2GRAY);   //原图窗口,显示   namedWindow("原图", 0);   imshow("原图", src);   //二值图窗口   namedWindow("二值图", 0);   // 滑动条     int nThreshold = 120;   createTrackbar("graybar", "二值图", &nThreshold, 255,on_trackbar);    on_trackbar(nThreshold, 0);   waitKey(0);   destroyWindow("原图");   destroyWindow("二值图");   destroyWindow("result");   return 0; }

回调函数

static void on_trackbar(int pos, void*) {   //二值化   threshold(src_gray, dst, pos, 255, CV_THRESH_BINARY);   imshow("二值图", dst);   //直方均匀化   equalizeHist(dst, src_equ);   //识别轮廓   vector<vector<Point>> contours;   vector<Vec4i> hierarchy;   findContours(src_equ, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);       //轮廓数量,可没有   //int len=contours.size();   //cout<<len<<endl;   //将图拷贝,进行遍历图片每个像素   Mat secImg = src_gray.clone();   const int np =secImg.rows * secImg.channels();   const int nr = secImg.rows;   for(int j=0;j<nr;j++){     uchar *sdata = secImg.ptr<uchar>(j);     for(int i=0;i<np;i++){       //判断是否在轮廓上或者外面,如果在便将像素变为255,即白色,因为这里需要的是最外轮廓,所以为contours[0],如果还需要别的,contours[i],i 可以取其他值       if (pointPolygonTest(contours[0],Point(i,j),false) != 1)         sdata[i]=255;        }        }   }   //result窗口以及显示结果   namedWindow("result",0);   imshow("result",secImg); }

上述就是小编为大家分享的使用Opencv怎么改变轮廓外背景颜色了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI