Canny边缘检测

<p>Canny边缘检测
C语言版本
来自于仕琪的讲稿《使用OpenCV进行图像处理》中的例程
/**************************************************
 * cvCanny:Canny边缘检测
 **************************************************/
 
/***********************************************************************
 * OpenCV example
 * By Shiqi Yu 2006
 ***********************************************************************/
 
#include &quot;cv.h&quot;
#include &quot;cxcore.h&quot;
#include &quot;highgui.h&quot;
 
int main( int argc, char** argv )
{
  //声明IplImage指针
  IplImage* pImg = NULL;
  IplImage* pCannyImg = NULL;
 
  //载入图像,强制转化为Gray
  if( argc == 2 &amp;&amp;
      (pImg = cvLoadImage( argv[1], 0)) != 0 )
    {
 
      //为canny边缘图像申请空间
      pCannyImg = cvCreateImage(cvGetSize(pImg),
                      IPL_DEPTH_8U,
                      1);
      //canny边缘检测
      cvCanny(pImg, pCannyImg, 50, 150, 3);
 
      //创建窗口
      cvNamedWindow(&quot;src&quot;, 1);
      cvNamedWindow(&quot;canny&quot;,1);
 
 
      //显示图像
      cvShowImage( &quot;src&quot;, pImg );
      cvShowImage( &quot;canny&quot;, pCannyImg );
 
      cvWaitKey(0); //等待按键
 
      //销毁窗口
      cvDestroyWindow( &quot;src&quot; );
      cvDestroyWindow( &quot;canny&quot; );
      //释放图像
      cvReleaseImage( &amp;pImg );
      cvReleaseImage( &amp;pCannyImg );
 
      return 0;
    }
 
  return -1;
}
Python版本
# -*- coding:utf-8 -*-
###########################################################
# OpenCV example
#
# cvCanny:Canny边缘检测
#
# By ChaiShushan 2008
###########################################################
 
import sys
 
# 导入OpenCV模块
 
from opencv.cv import *
from opencv.highgui import *
 
if __name__ == '__main__':
 
    if len(sys.argv) == 2:
 
        # 载入图像,强制转化为Gray
        # 0表示Gray,1表示Origin,因为cvCanny函数参数要求图像必须是单通道的
 
        pImg = cvLoadImage(sys.argv[1], 0)
        if not pImg: sys.exit(-1)
 
        # 为canny边缘图像申请空间
 
        pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1)
 
        # canny边缘检测
        # 50和150是检测阀值,opencv必须手工输入阀值,如需自动匹配阀值参考cvCanny函数介绍
 
        cvCanny(pImg, pCannyImg, 50, 150, 3)
 
        # 创建窗口
 
        cvNamedWindow(&quot;src&quot;, 1)
        cvNamedWindow(&quot;canny&quot;,1)
 
        # 显示图像
 
        cvShowImage( &quot;src&quot;, pImg )
        cvShowImage( &quot;canny&quot;, pCannyImg )
 
        # 等待按键
 
        cvWaitKey(0);
 
        # 销毁窗口
 
        cvDestroyWindow( &quot;src&quot; )
        cvDestroyWindow( &quot;canny&quot; )
 
        # 释放图像
 
        cvReleaseImage( pImg )
        cvReleaseImage( pCannyImg )
 
        sys.exit(0)</p>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值