最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

边缘检测——OpenCV例子学习

来源:动视网 责编:小OO 时间:2025-09-28 20:48:42
文档

边缘检测——OpenCV例子学习

边缘检测——OpenCV例子学习下面是OpenCV中的一个例子edge.c,我加了一些注释,以便自己理解。/*--edge.c--*/#ifdef_CH_#pragmapackage#endif#ifndef_EiC#include"cv.h"#include"highgui.h"#endifcharwndname[]="Edge";chartbarname[]="Threshold";intedge_thresh=1;IplImage*image=0,*cedge=0,*gray=0,*ed
推荐度:
导读边缘检测——OpenCV例子学习下面是OpenCV中的一个例子edge.c,我加了一些注释,以便自己理解。/*--edge.c--*/#ifdef_CH_#pragmapackage#endif#ifndef_EiC#include"cv.h"#include"highgui.h"#endifcharwndname[]="Edge";chartbarname[]="Threshold";intedge_thresh=1;IplImage*image=0,*cedge=0,*gray=0,*ed

边缘检测——OpenCV例子学习

下面是OpenCV中的一个例子edge.c,我加了一些注释,以便自己理解。

/*-- edge.c --*/

#ifdef _CH_

#pragma package 

#endif

#ifndef _EiC

#include "cv.h"

#include "highgui.h"

#endif

char wndname[] = "Edge";

char tbarname[] = "Threshold";

int edge_thresh = 1;

IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;

// define a trackbar callback

void on_trackbar(int h)

{

    cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 );//滤波函数,在这里貌似不起作用,因为产生的结果被下面的函数产生的结果覆盖

    cvNot( gray, edge );//按位取反函数,在这里貌似不起作用,因为产生的结果被下面的函数产生的结果覆盖

    // Run the edge detector on grayscale

    cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);//边缘检测

 

    cvZero( cedge );//清空数组

    // copy edge points

    cvCopy( image, cedge, edge );//从image中复制edge指定的内容到cedge

    cvShowImage(wndname, cedge);//显示cedge

}

int main( int argc, char** argv )

{

   

    if( (image = cvLoadImage( filename, 1)) == 0 )

        return -1;

    // Create the output image,8位无符号深度,3通道

    cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);

    // Convert to grayscale,8位无符号深度,1通道

    gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);

    edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);

    cvCvtColor(image, gray, CV_BGR2GRAY);//把image转换成黑白放到gray中

    // Create a window

    cvNamedWindow(wndname, 1);

    // create a toolbar

    cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);//创建游标

    // Show the image

    on_trackbar(0);

    // Wait for a key stroke; the same function arranges events processing

    cvWaitKey(0);

    cvReleaseImage(&image);

    cvReleaseImage(&gray);

    cvReleaseImage(&edge);

    cvDestroyWindow(wndname);

    return 0;

}

#ifdef _EiC

main(1,"edge.c");

#endif

编译文件后运行

然后滑动游标,就可以得到满意的中的图像的边缘检测结果

文档

边缘检测——OpenCV例子学习

边缘检测——OpenCV例子学习下面是OpenCV中的一个例子edge.c,我加了一些注释,以便自己理解。/*--edge.c--*/#ifdef_CH_#pragmapackage#endif#ifndef_EiC#include"cv.h"#include"highgui.h"#endifcharwndname[]="Edge";chartbarname[]="Threshold";intedge_thresh=1;IplImage*image=0,*cedge=0,*gray=0,*ed
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top