利用OpenCV提取图像的边缘,并将检测的边缘重新保存在一个新的文件中

来源:互联网 发布:3d平面设计软件 编辑:程序博客网 时间:2024/05/19 12:15

本篇博客主要介绍如何使用OpenCV提取图片的轮廓,并将图片重新保存在新的文件中,实现起来也很简单,OpenCV的sdk中提供了相应的方法,只需要调用即可,具体代码如下所示:

#include <iostream>#include <opencv2\opencv.hpp>using namespace std;using namespace cv;//声明使用的命名空间const char * source_window = "source"; //声明原图显示的窗口名称const char* canny_window = "canny";//声明处理过后的图片显示的窗口名称int main() {    Mat source = imread("fifth.jpg", 1); //加载一个图片到Mat中    Mat temp(source.rows, source.cols, CV_8UC1); //根据原有的一个Mat创建一个新的单通道的Mat    cvtColor(source, temp, COLOR_BGR2GRAY);//将原来的彩色图片转化成灰色图片    //Canny方法要求输入的图片为单通道的Mat,所以才有了上一步的转换,在OpenCV中,很多的处理都是讲原有    //的彩色图片转化成灰色在进行处理的    //进行轮廓提取。并将提取出来的轮廓图重新存储在temp中,相当于    //直接改动temp对应的内存的值    //50 ,200为阈值    Canny(temp, temp, 50, 200);    //将temp中的数据转化成对应格式的图片并存储在指定的文件中,默认存在当前项目路径下    imwrite("fifth_canny.jpg", temp);    //用于显示原图和处理过的图片    cvNamedWindow(source_window);    cvNamedWindow(canny_window);    imshow(source_window, source);    imshow(canny_window, temp);    waitKey(5*1000);//等待5秒,5秒后自动销毁显示窗口,结束主程序    cvDestroyWindow(source_window);    cvDestroyWindow(canny_window);    return 0;}

程序运行的效果如下图所示:
原图:
这里写图片描述

处理过后的图片:
这里写图片描述

通过查看项目目录可以看到,在项目目录下生成一个新的图片文件:
这里写图片描述

好了,关于OpenCV的图片加载和保存就说到这,有兴趣的朋友可以以关注我,遇到问题大家一起讨论一下!!

这是我的微信公众号,如果可以的话,希望您可以帮忙关注一下,这将是对我最大的鼓励了,谢谢!!

这里写图片描述

项目代码会上传至GitHub中,地址:项目代码地址

原创粉丝点击