OpenCV入门:图像边缘提取

本文提供了一个使用OpenCV库进行边缘检测的C++代码实例,详细解释了canny算法的工作原理及其参数配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将介绍如何利用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 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值