应用程序在OpenCV的均衡化列表上崩溃
Application crashes on equalizeHist of OpenCV
我的MFC应用程序运行OpenCV2的各种API。其他一切都很好。但是当我的程序运行
cv::Mat result;
cv::equalizeHist(m_cvImage,result);
我得到以下运行时异常:
Unhandled exception at 0x7727fbae in OpenCVTest.exe: Microsoft C++ exception: cv::Exception at memory location 0x0029e944..
"C:slaveWinInstallerMegaPacksrcopencvmodulesimgprocsrchistogram.cpp:2430: error: (-215) CV_ARE_SIZES_EQ(src, dst) && CV_ARE_TYPES_EQ(src, dst) && CV_MAT_TYPE(src->type) == CV_8UC1"
根据调试器,异常是在equalizeHist中处理图像的过程中抛出的(大约40%)。有什么我需要做的吗?仅供参考:我正在使用其网站提供的二进制OpenCV。
更新:我已经解决了这个问题,将图像转换为灰度级之前均衡它。我只是不知道
- 该函数仅适用于灰度图像 看起来像灰度的
- 图像可以是非灰度的。
我想您遇到的问题是m_cvImage
是一个3通道图像。因此,在调用equalizeHist
之前,您需要将其转换为灰度图像。
cvtColor(m_cvImage, m_cvImage, CV_BGR2GRAY);
cv::Mat result;
cv::equalizeHist(m_cvImage, result);
另外,请查看EqualizeHist_Demo.cpp教程示例,了解如何使用它。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 如何在C / C++中正确实现链接列表而不会使程序崩溃
- C 链接列表堆栈POP功能崩溃
- 我很难弄清楚为什么我的双重链接列表会崩溃,我可以找到一些方向
- 将元素添加到列表会使程序崩溃..有时
- C++初始化复制构造函数中的列表赋值,并在复制构造函数中崩溃
- 带有圆形链接列表的崩溃
- 删除 C++ 中的列表会导致崩溃
- 每次我在SFML中绘制列表项时,它都会崩溃
- Qt 当列表小部件项被单击两次时崩溃
- 复制列表时光荣崩溃
- 使用"pop_front"从排序列表中删除元素会导致崩溃
- C++STL列表崩溃,数字超过1000 000 000 000
- 当列表中有两个以上的项目时,链表的函数 add 会崩溃
- 应用程序在OpenCV的均衡化列表上崩溃
- 当添加一个指针到多个boost::ptr_vector列表时崩溃
- 删除循环列表中的节点时崩溃
- 复制链接列表会使程序崩溃
- 排序算法在试图打印列表信息时崩溃