OpenCV 特征提取(角点检测)

#include <stdio.h>
#include "cv.h"
#include "highgui.h"

#define MAX_CORNERS 100

int main(void)
{
int cornersCount=MAX_CORNERS;//得到的角点数目
CvPoint2D32f corners[MAX_CORNERS];//输出角点集合
IplImage *srcImage = 0,*grayImage = 0,*corners1 = 0,*corners2 = 0;
int i;
CvScalar color = CV_RGB(255,0,0);
char *filename = "pic3.png";
cvNamedWindow("image",1);

//Load the image to be processed
srcImage = cvLoadImage(filename,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 os same size as the copied images
//两幅临时32位浮点图像,cvGoodFeaturesToTrack会用到
corners1 = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F,1);
corners2 = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F,1);

cvGoodFeaturesToTrack(grayImage,corners1,
corners2,corners,
&cornersCount,0.05,
30,//角点的最小距离是30
0,//整个图像
3,0,0.4);
//默认值
printf("num corners found: %d/n",cornersCount);

//开始画出每个点
if (cornersCount>0)
{
for (i=0;i<cornersCount;i++)
{
cvCircle(srcImage,cvPoint((int)(corners[i].x),(int)(corners[i].y)),
2,color,2,CV_AA,0);
}
}

cvShowImage("image",srcImage);
cvSaveImage("imagedst.png",srcImage);

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

cvWaitKey(0);
return 0;
} 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值