本文实例为大家分享了Opencv轮廓外背景颜色改变的具体代码,供大家参考,具体内容如下
自行学习弄得简单代码,使用了图像中的轮廓发现以及提取,再绘制出来,改变轮廓外的像素
首先,头文件,写的比较多,没用的可以自己去除
#include#include #include"opencv2/imgproc/imgproc.hpp" #include #include #include //命名空间 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> contours;
vector hierarchy;
findContours(src_equ, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);
//轮廓数量,可没有
//int len=contours.size();
//cout<(j);
for(int i=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



