opencv

最近一直在学习opencv和图像处理,自己作个总结吧

int Corner(int i) { int totalnum; cvSetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES,i); IplImage* imageB = cvQueryFrame(capture); cvSetImageROI(imageB, cvRect(Size,Size, imageB->width-Size, imageB->height-Size)); //提取帧中的(size,size)为点,高为imageB->height-Size //宽为imageB->width-Size IplImage *img2 = cvCreateImage(cvGetSize(imageB), imageB->depth, imageB->nChannels); cvCopy(imageB, img2, NULL); cvResetImageROI(imageB); totalnum = compute_corner(img2); cvReleaseImage(&img2); totalnum = compute_corner(imageB); return totalnum; } int compute_corner(IplImage* image) { int block_size=3; int aperture_size=7; double k=0.04; int totalCornerNum=0; IplImage* im1 = cvCreateImage(cvGetSize(image), IPL_DEPTH_32F, 1); IplImage* tempImage = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1); IplImage* im2 = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3); cvCvtColor(image, tempImage, CV_BGR2GRAY); //颜色转化 作为参数CV_BGR2GRAY把rgb转化为灰度级的 cvCornerHarris(tempImage, im1, block_size, aperture_size, k);//哈里斯角点检测,im1存储存储哈里斯(Harris)检测responces的图像。与输入图像等大。 int Thresh=0; double scale=1,shift=0; //该函数首先对输入数组的元素进行比例缩放,然后将shift加到比例缩放后得到的各元素上,即: dst(I)=src(I)*scale + (shift,shift,...),最后可选的类型转换将结果拷贝到输出数组。 cvConvertScale( im1, tempImage, scale,shift); cvThreshold( tempImage, tempImage ,Thresh, 255, CV_THRESH_OTSU ); //取阀值为OTSU把图像转为二值图像 for(int i=0; i<tempImage->height; i++) for(int imdata=0,j=0; j<tempImage->width; j++) { imdata=*(tempImage->imageData + tempImage->widthStep*i+j); if(imdata != 0) totalCornerNum++; } cvReleaseImage(&im1); cvReleaseImage(&tempImage); cvReleaseImage(&im2); return totalCornerNum; }

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值