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

本篇博客主要介绍如何使用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中,地址:项目代码地址

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页