您的位置:首页 > 运维架构

OpenCV入门:图像边缘提取

2016-03-21 16:59 369 查看
本文将介绍如何利用OpenCV进行边缘提取,源代码如下:

//
// main.cpp
// Edge_Detection
//
// Created by 黄露 on 16/3/21.
// Copyright © 2016年 huanglu_thu13. All rights reserved.
//

#include "cv.h"
#include "highgui.h"

int main(int argc, const char * argv[]) {
//创建两个窗口显示处理前后的图片
cvNamedWindow("Imgae Before Processing");
cvNamedWindow("Image After Processing");
//创建图像指针,加载图像至内存
IplImage * in = cvLoadImage("/Users/huanglu/Pictures/thusada.jpg",1);
//创建一个图像来存储处理后的图片
IplImage * out = cvCreateImage(cvGetSize(in), in->depth, 1);
//设置上下阈值和算子内核大小
double low = 10;
double high = 100;
double aperture = 3;
//进行边缘提取
cvCanny(in, out, low, high, aperture);
//显示处理前后的图片
cvShowImage("Imgae Before Processing", in);
cvShowImage("Imgae After Processing", out);
//释放图像指针
cvReleaseImage(&in);
cvReleaseImage(&out);
//等待用户输入任意键结束
cvWaitKey(0);
//释放两个窗口
cvDestroyWindow("Imgae Before Processing");
cvDestroyWindow("Imgae After Processing");
return 0;
}其中,cvCanny采用canny算法对图像的边缘检测,其声明为:
void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 );
其中
       image 输入单通道图像(可以是彩色图像)对于多通道的图像可以用cvCvtColor()修改。

       edges 输出的边缘图像 ,也是单通道的,但是是黑白的

       threshold1 第一个阈值

       threshold2 第二个阈值

       aperture_size Sobel 算子内核大小

函数 cvCanny 采用 Canny 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV 图像处理