带有Qt函数的OpenCV cv :: erode()和cv :: dilate()崩溃

时间:2012-08-23 20:00:32

标签: qt image-processing opencv

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <QDebug>

int main()
{
    // Read input image
    cv::Mat img= cv::imread("D:\\extra\\Procesare de imagine\\altele\\images\\group.jpg");
    if (!img.data)
    {
        qDebug("no image");
        return 0;

    }

    // Display the image
    cv::namedWindow("Image");
    cv::imshow("Image",img);

    // Erode the image
    cv::Mat eroded;
    cv::erode(img,eroded,cv::Mat());


    cv::waitKey();
    return 0;
}

嗨,我在opencv(在Qt中)函数erode()和dilate()有以下问题。我使用msvc10编译器。我尝试运行一个简单的代码,但在行cv :: erode(img,eroded,cv :: Mat())它崩溃了。我没有收到任何错误消息,只是一个“program.exe已停止工作”的对话框。我去“调试程序”,我得到调用堆栈tbb.dll([下面的帧可能不正确和/或丢失,没有为tbb.dll加载符号]: )。我提到从开始我在调试模式下构建时遇到问题(imread在Debug中不起作用,只有cvLoadImage),并且函数cv :: threshold()以相同的方式崩溃,代码非常简单。 我读到可以通过复制tbb.dll旁边的tbb.pdb来解决,但它不起作用。

1 个答案:

答案 0 :(得分:0)

只是添加到Kamyar的评论中:

如果您正在编译调试配置,那么您可能还必须使用名为tbb_debug.dll的tbb调试版本。对于适用于Windows的OpenCV 2.4.1,可以在build \ common \ tbb下的OpenCV目录中找到它。