Opencv图像处理之轮廓外背景颜色改变
更新时间:2020年4月25日 17:25 点击:2335
本文实例为大家分享了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实现最小外接矩形和圆
下一篇: 新手socket编程入门详解指南
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- 图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
- 这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python OpenCV的相关资料,帮助大家更好的理解和学习使用python的opencv,感兴趣的朋友可以了解下...2021-03-31
- 这篇文章主要为大家详细介绍了JavaScript实现颜色查看器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-13
- 这篇文章主要介绍了使用OpenCV去除面积较小的连通域,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-05
- ps软件是现在很多人比较喜欢的,这次文章就给大家介绍ps软件的抠图技巧,ps快速抠出白色背景下的透明玻璃杯,一起来看看。   1、如果是白底抠图的话,先将...2017-07-06
- 本文实例讲述了JavaScript实现点击按钮切换网页背景色的方法。分享给大家供大家参考,具体如下:这里演示JavaScript用按钮随意变换背景颜色,每点击一下按钮,就可以随机改变一种网页背景颜色。颜色值事先是保存在JS的数组里...2015-10-21
安卓利用按钮Button更改的字体大小、字体颜色、背景颜色代码
本文章来介绍在android开发中,我们通过button按钮来动态改变字体大小、字体颜色、背景颜色代码,有需要了解的朋友可参考参考。 实现的逻辑:通过遍历View的方式,判断Vi...2016-09-20详解pycharm的python包opencv(cv2)无代码提示问题的解决
这篇文章主要介绍了详解pycharm的python包opencv(cv2)无代码提示问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-29在C#中使用OpenCV(使用OpenCVSharp)的实现
这篇文章主要介绍了在C#中使用OpenCV(使用OpenCVSharp)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15- 这篇文章主要介绍了PyCharm设置注释字体颜色以及是否倾斜的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-16
- 背景固定效果在许多的网站都能看到,今天我们一起来看一个关于CSS制作的页面背景固定和滚动效果,应用非常的好用希望对各位带来帮助。 如何创建一个不需要Javascript...2016-09-14
- 这篇文章主要为大家详细介绍了JavaScript实现鼠标经过表格行给出颜色标识,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-12
- 这篇文章主要介绍了R ggplot2 修改默认颜色的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要为大家详细介绍了C++ opencv实现车道线识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-20
- 这篇文章主要为大家详细介绍了Opencv LBPH人脸识别算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
详解opencv中画圆circle函数和椭圆ellipse函数
这篇文章主要介绍了opencv中画圆circle函数和椭圆ellipse函数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-09