canny边缘检测

C语言版本
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
 
int main( int argc, char** argv )
{
  //声明IplImage指针
  IplImage* pImg = NULL;
  IplImage* pCannyImg = NULL;
 
  //载入图像,强制转化为Gray
  if( argc == 2 &&
      (pImg = cvLoadImage( argv[1], 0)) != 0 )
    {
 
      //为canny边缘图像申请空间
      pCannyImg = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,1);
      //canny边缘检测
      cvCanny(pImg, pCannyImg, 50, 150, 3);
 
      //创建窗口
      cvNamedWindow("src", 1);
      cvNamedWindow("canny",1);
 
 
      //显示图像
      cvShowImage( "src", pImg );
      cvShowImage( "canny", pCannyImg );
 
      cvWaitKey(0); //等待按键
 
      //销毁窗口
      cvDestroyWindow( "src" );
      cvDestroyWindow( "canny" );
      //释放图像
      cvReleaseImage( &pImg );
      cvReleaseImage( &pCannyImg );
 
      return 0;
    }
 
  return -1;
}


C++语言版本
#include "cv.hpp" 

#include "cxcore.hpp"

#include "opencv2\highgui\highgui.hpp" 

using namespace cv; 

using namespace std;  

int edgeThresh = 1;   // 声明 原始图片,灰度图片,和 canny边缘图片

Mat image, cedge;

Mat gray, edge;  

void onTrackbar(int, void*) 

{

//blur 灰度图片

 blur(gray, edge, Size(3,3));  

  // Canny 边缘检测 

Canny(gray,edge, edgeThresh, edgeThresh*3, 3);  

  //全部设为0 

cedge = Scalar::all(0);  

  //拷贝边缘的象素点

image.copyTo(cedge, edge);  

  imshow("Edge map", edge);  

 }   

int main(int argc, char**argv) 

{     

// 载入图片 

image = imread(argv[1], 1); 

  // 判断载入图片是否成功

if(image.empty()) 

printf("miss the image file: %d \n", argv[1]); 

return -1;

 } 

  // 生成灰度图片,因为只有灰度图片才能生成边缘图片 

cedge.create(image.size(), image.type());cvtColor(image,gray, CV_BGR2GRAY);   

//新建一个窗口

  namedWindow("Edge map", 1);  

  // 生成一个进度条来控制边缘检测 

createTrackbar("Canny Threshold", "Edge map", &edgeThresh,100, onTrackbar);  

  //初始化图像 

onTrackbar(0,0);  

  waitKey(0);  

  return 0; 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值