关于OpenCv中cvPreCornerDetect 运行出错解决方法

http://m.blog.csdn.net/blog/wode0239

由于书本上示例的不全,相信大家在做的时候,肯定是无从下手。

而且就算做了,会遇到各种错误。

我也是初学,也遇到各种Exception。

相信大家遇到的问题就是如何将load的image转换为32FC1

我花了一个晚上,终于功夫不负有心人,终于解决这个问题了。

我们知道由于cvPreCornerDetect 接收的参数,只能是浮点型的单通道图像

而我们load进来的图像,默认是char 类型的3通道的图像,那么到底如何转换呢

转换图像有两个方法,一个是cvConvert或者cvConvertScale ,另一个是cvCvtColor.

根据我的测试,得到如下结果

//单纯的使用cvConvertScale(image,temp);,只能转换相同通道不同值深度的图像

//然后在使用cvCvtColor(temp,out,CV_RGB2GRAY); 这个函数也只能转换相同深度,不同通道的图像

所以我们要结合使用才能将我们传入的8UC3转为32FC1

下面直接看代码吧

这是我经过测试的函数,可以运行,并出图像

//计算用于角点检测的特征图,大家只需要在main里,调用,并将图像指针传入。运行,即可得到结果

void doPreCornerDetect(IplImage* image)

{

IplImage* temp = cvCreateImage(cvGetSize(image),IPL_DEPTH_32F,3);

//由于cvPreCornerDetect只接收 32FC1图像,所以应该讲传入的image转换

//单纯的使用cvConvertScale(image,temp);,只能转换相同通道不同值深度的图像

//然后在使用cvCvtColor(temp,out,CV_RGB2GRAY); 这个函数也只能转换相同深度,不同通道的图像

cvConvertScale(image,temp);

IplImage* out = cvCreateImage(cvGetSize(temp),IPL_DEPTH_32F,1);

cvCvtColor(temp,out,CV_RGB2GRAY);

IplImage* corners = cvCloneImage(out);

/*IplImage* dilated_corners = cvCloneImage(temp);

IplImage* corner_mask = cvCreateImage( cvGetSize(temp), 8, 1 );*/

cvPreCornerDetect( out, corners, 3 );

// 扩张

/*cvDilate( corners, dilated_corners, 0, 1 );

cvSub( corners, dilated_corners, corners );

cvCmpS( corners, 0, corner_mask, CV_CMP_GE );*/

cvNamedWindow("PreCornerDetect");

cvShowImage("PreCornerDetect",corners);

cvWaitKey(0);

cvReleaseImage( &out );

cvReleaseImage( &corners );

//cvReleaseImage( &dilated_corners );

cvReleaseImage(&temp);

}

opencv cvPreCornerDetect的更多相关文章

  1. [OpenCV] IplImage and Functions

    In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra.  Ref: http://blog.c ...

  2. OpenCv结构和内容

    OpenCv的结构和内容 OpenCv源码组成结构其中包括cv, cvauex, cxcore, highgui, ml这5个模块 CV:图像处理和视觉算法 MLL:统计分类器 HighGui:GUI ...

  3. [OpenCV] IplImage and Operation

    IplImage 一.资源 In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra. Ref:  ...

  4. 常用的OpenCV函数速查

    常用的OpenCV函数速查 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4 ...

  5. OpenCV学习笔记四:ImgProc模块

    一,简介 这个模块包含一系列的常用图像处理算法. 二,分析 此模块包含的文件如下图: 其导出算法包括如下: /*********************** Background statistics ...

  6. 常用的OpenCV 2.0函数速查

    OpenCV 2.0函数释义列表 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像 ...

  7. opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...

  8. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  9. opencv源码:cascadedetect

    级联分类器检测类CascadeClassifier,提供了两个重要的方法: CascadeClassifier cascade_classifier; cascade_classifier.load( ...

随机推荐

  1. OpenSUSE下支持托盘的邮件客户端Sylpheed

    在网上搜索了很多客户端想支持系统托盘,发现一个很不错的邮件客户端Sylpheed.设置方式和foxmail很像,最为重要的是支持系统托盘,很方便,默认没有开启,简单设置下:配置->通用首选项-& ...

  2. 【Henu ACM Round#15 B】A and B and Compilation Errors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 开3个map, 存在map里面: 然后迭代第一个和第二个map; 分别与第二个和第三个map比较就可以了 [代码] #include ...

  3. spring 使用c3po连接池

    1 数据源:能够简单理解为数据的来源. 2 连接池:是缓存一定数量的数据库连接,当程序须要数据库连接的时候,直接在连接池中获取空暇的连接,使用完再放回连接池中,此连接又变成空暇状态,等待下一次连接. ...

  4. jquery源码01---(2880 , 3042) Callbacks : 回调对象 : 对函数的统一管理

    // optionsCache : { 'once memory' : { once : true , memory : true } } var optionsCache = {}; // once ...

  5. Linux获取进程中变量

    列出所有进程 #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> ...

  6. ElasticSearch概述和定义

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  7. js函数的解析与执行过程

    function f(a,b,c){ alert(a);//函数字符串 alert(b); var b = 5; function a(){ } } f(1,2); //预处理 lexicalEnvi ...

  8. xsy3320 string

    xsy3320 string 题意: ​ 给一颗树,每条边上有一个字符,求有多少条路径是回文的.(\(N\leq50000\),\(c\in\{1,2\}\)) 题解: ​ 前置芝士:回文前缀& ...

  9. 【CS Round #39 (Div. 2 only) D】Seven-segment Display

    [Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字, ...

  10. 洛谷 P1911 L国的战斗之排兵布阵

    P1911 L国的战斗之排兵布阵 题目背景 L国即将与I国发动战争!! 题目描述 L国的指挥官想让他的每一个军营都呈现出国徽形——“L”形(方向无所谓).当然,他的指挥营除外(这叫做个性),他想不出该 ...