OpenCV 1.0 cvtexture.cpp bug 修正 内存错误

原创 2011年01月20日 10:17:00

最近项目需要提取图像特征:能量、熵、对比度等等,以对视野当前状态进行简单分类。

 

发现OpenCV上有cvtexture文件,有可用信息。但对其进行调试之后发现,存在一些问题。查阅后,参照http://www.opencv.org.cn/forum/viewtopic.php?f=10&t=8379&p=44545&hilit=cvtexture&sid=eec47a63b50b8e7f07d6fee4030fae8a#p44545进行了简单修改。修改后,问题得到解决,但是感觉结果不对,并且出现内存错误的原因不可能是由于malloc和new的关系。

 

对原始cvTexture.cpp调试之后,发现问题停在函数 icvCreateGLCM_LookupTable_8u_C1R ,感觉是内存分配越界问题。

 

浏览代码后,发下如下几个问题:

1. 函数 cvCreateGLCM 中,在动态创建CvGLCM结构体时:

 

很明显 对动态申请的内存 存在错误, 改动如下:

 

2. 函数icvCreateGLCM_LookupTable_8u_C1R中,创建三维数组时:

 

创建的一维二维数组,cvAlloc的大小都存在问题。更正如下:

 

3. 在函数icvCreateGLCMDescriptors_AllowDoubleNest中使用cvAlloc申请内存,但使用delete[]释放内存,出现错误。

更正如下:

 

 

修正以上三项之后,程序可以得到结果,但是结果的正确性没有验证。

另外,对文件修改完成后,如果新工程没有和OpenCV工程建立依赖关系,需要对OpenCV工程重新编译,生成新的DLL文件。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

灰度共生矩阵及相关特征值的计算——opencv

#include #include #include #include #include using namespace std; using namespace cv;const int gray_...

计算灰度共生矩阵GLCM

灰度共生矩阵         灰度共生矩阵定义为像素对的联合分布概率,是一个对称矩阵,它不仅反映图像灰度在相邻的方向、相邻间隔、变化幅度的综合信息,但也反映了相同的灰度级像素之间的位置分布特征,...

VC++6.0与OpenCV1.0环境经常出现的错误及解决办法

1. OpenCV2.2也添加了相关路径。。。。。。(P267<>)未通过编译,程序运行时报错fatal error C1083: Cannot open include file: 'cv.h': ...

wxpython skin bug(弹出菜单,内存错误)

前面说到了 wxpython skin的问题(使用皮肤后弹出目录,程序崩溃) http://blog.csdn.net/xugangjava/article/details/7763212 使...

net2ftp1.0中文BUG修正版

  • 2015-01-28 09:16
  • 4.15MB
  • 下载

Opencv+VC的配置及bug修正、directx安装完整版解说

opencv刚接触的时候,最烦心的就是安装完后随便一编译就发现一堆的错误,所有事情甚至不能从0开始。以我学习opencv的经验,将我遇到及解决的办法整理出来给大家参考。1:安装vc62:安装openc...

Opencv cvCreateGLCM()计算灰度共生矩阵内存错误

在网上找了写帖子说这个问题,一开始没调通,后来在源码里一点点调试的,真麻烦 对原始cvTexture.cpp调试之后,发现问题停在函数 icvCreateGLCM_LookupTable_8u_C1...

__BEGIN__; __END__是opencv中的一种错误处理机制,它可以防止非法的内存释放,以及内存泄露

http://shijuanfeng.blogbus.com/logs/205062662.html __BEGIN__; __END__是opencv中的一种错误处理机制,它可以防止非...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)