opencv<三>基于opencv的canny检测

基于opencv的canny检测

    

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

IplImage* doCanny(
    IplImage* in,
    double    lowThresh,
    double    highThresh,
    double    aperture)
{
    if (in->nChannels != 1)
        return(0); //只能处理灰度图像
    IplImage* out = cvCreateImage(
        cvGetSize( in ),
        in->depth, //8位   
        1);//建一个8位灰度图像
    cvCanny( in, out, lowThresh, highThresh, aperture );//函数的第二及第三个参数为两个阈值。
 //小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割
    return( out );
};

int main( int argc, char** argv )
{
  IplImage* img_rgb = cvLoadImage( "D:\\vs2008\\project\\canny检测\\lena.jpg" );
  IplImage* img_gry = cvCreateImage( cvSize( img_rgb->width,img_rgb->height ), img_rgb->depth, 1);
  cvCvtColor(img_rgb, img_gry ,CV_BGR2GRAY);//RGB转化为灰度图像
  cvNamedWindow("RGB图像", CV_WINDOW_AUTOSIZE );
  cvNamedWindow("Gray图像", CV_WINDOW_AUTOSIZE );
  cvNamedWindow("Canny检测图像", CV_WINDOW_AUTOSIZE );
  cvShowImage("Gray图像", img_gry );
  cvShowImage("RGB图像", img_rgb );
  IplImage* img_cny = doCanny( img_gry, 10, 100, 3 );//设置第一阈值和第二阈值,以及soble算子参数
  cvShowImage("Canny检测图像", img_cny );
  cvWaitKey(0);
  cvReleaseImage( &img_rgb);
  cvReleaseImage( &img_gry);
  cvReleaseImage( &img_cny);
  cvDestroyWindow("RGB图像");
  cvDestroyWindow("Gray图像");
  cvDestroyWindow("Canny检测图像");
}
原图

灰度图

canny边缘检测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值