【问题标题】:Application crashes on equalizeHist of OpenCV应用程序在 OpenCV 的 equalizeHist 上崩溃
【发布时间】:2011-12-15 18:10:18
【问题描述】:

我的 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。

更新:

我已通过在均衡之前将图像转换为灰度级来解决此问题。我只是不知道

  1. 该功能仅适用于灰度图像
  2. 看起来像灰度的图像可以是非灰度的。

【问题讨论】:

    标签: c++ mfc opencv


    【解决方案1】:

    我想您遇到的问题是m_cvImage 是一个 3 通道图像。所以,你需要先把它转换成灰度图,然后才能调用equalizeHist

    cvtColor(m_cvImage, m_cvImage, CV_BGR2GRAY);
    
    cv::Mat result;
    cv::equalizeHist(m_cvImage, result);
    

    另外,请查看EqualizeHist_Demo.cpp 教程示例以了解其使用方法。

    【讨论】:

    • 没错。我希望你早点发布。还是谢谢。
    • @Paul 我想你在我写答案的时候更新了你的帖子:)
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多