我的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:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\histogram.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教程示例以了解其用法。

    10-08 11:24