角点检测(300分)

  • 主题发起人 主题发起人 011101
  • 开始时间 开始时间
0

011101

Unregistered / Unconfirmed
GUEST, unregistred user!
opencv中包含了角点检测接口,请问在delphi中怎么调用?
 
角点检测(corner detection)的源代码(需要OPENCV库的支持)

这是在 Ruadhan 提供的源代码基础上做了一些修改,可以检测图像中的角点。应用环境是:OPENCV BETA 4,VC6 编译运行通过。

==========
#include <stdio.h>
#include &quot;cv.h&quot;
#include &quot;highgui.h&quot;
#define max_corners 100

int main( int argc, char** argv )
{
int cornerCount=max_corners;
CvPoint2D32f corners[max_corners];
double qualityLevel;
double minDistance;
IplImage *srcImage = 0, *grayImage = 0, *corners1 = 0, *corners2 = 0;
int i;
CvScalar color = CV_RGB(255,0,0);

cvNamedWindow( &quot;image&quot;, 1 ); // create HighGUI window with name &quot;image&quot;

//Load the image to be processed
srcImage = cvLoadImage(&quot;..//..//c//pic3.png&quot;, 1);

grayImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1);

//copy the source image to copy image after converting the format
cvCvtColor(srcImage, grayImage, CV_BGR2GRAY);

//create empty images of same size as the copied images
corners1= cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_32F, 1);
corners2= cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F, 1);

cvGoodFeaturesToTrack (grayImage, corners1, corners2, corners,
&cornerCount, 0.05, 5, 0);

printf(&quot;num corners found: %d/n&quot;, cornerCount);

// draw circles at each corner location in the gray image and
// print out a list the corners
if(cornerCount>0)
{
for (i=0; i<cornerCount; i++)
{
cvCircle(srcImage, cvPoint((int)(corners.x), (int)(corners.y)), 6,
color, 2, CV_AA, 0);
}
}

cvShowImage( &quot;image&quot;, srcImage );

cvReleaseImage(&srcImage);
cvReleaseImage(&grayImage);
cvReleaseImage(&corners1);
cvReleaseImage(&corners2);

cvWaitKey(0); // wait for key. The function has
return 0;
}




-----------------
 
你把&quot;cv.h&quot;中相关的dll调用转换成delphi就应该可以吧,
 
cv 头文件中要是调用了其它头文件中的方法呢?那不是要将opencv全转换为delphi版本?
 
我觉得转是要转,但没必要都转,
写个dll把你常用的方法封装进去即可
 
http://www.feiyang.net.cn/index.htm
 
我也想知道,我在写一个矢量绘图软件,想当鼠标移到四方形或者圆形中点时,就绘出一个小焦点显示。这个应该也是角点检测吧。
 
后退
顶部