带有Qt函数cv::腐蚀()和cv::扩张()崩溃的OpenCV #包括 #包括 #包括 #包括 int main() { //读取输入图像 cv::Mat img=cv::imread(“D:\\extra\\Procesare de imagine\\altele\\images\\group.jpg”); 如果(!img.data) { qDebug(“无图像”); 返回0; } //显示图像 cv::namedWindow(“图像”); cv::imshow(“图像”,img); //侵蚀形象 cv::席状侵蚀; cv::腐蚀(img,腐蚀,cv::Mat()); cv::waitKey(); 返回0; }
您好,我对opencv(在Qt中)函数腐蚀()和扩张()有以下问题。我使用msvc10编译器。我试图运行一个简单的代码,但在cv::腐蚀(img,腐蚀,cv::Mat())行,它崩溃了。我没有收到任何错误消息,只是一个“program.exe已停止工作”的对话框。我转到“调试程序”,得到调用堆栈tbb.dll([下面的帧可能不正确和/或缺失,没有为tbb.dll加载符号]: ).我提到,从一开始我就在调试模式下构建时遇到问题(imread在调试模式下不工作,只有cvLoadImage),函数cv::threshold()也会以同样的方式崩溃,代码非常简单。带有Qt函数cv::腐蚀()和cv::扩张()崩溃的OpenCV #包括 #包括 #包括 #包括 int main() { //读取输入图像 cv::Mat img=cv::imread(“D:\\extra\\Procesare de imagine\\altele\\images\\group.jpg”); 如果(!img.data) { qDebug(“无图像”); 返回0; } //显示图像 cv::namedWindow(“图像”); cv::imshow(“图像”,img); //侵蚀形象 cv::席状侵蚀; cv::腐蚀(img,腐蚀,cv::Mat()); cv::waitKey(); 返回0; },qt,image-processing,opencv,Qt,Image Processing,Opencv,您好,我对opencv(在Qt中)函数腐蚀()和扩张()有以下问题。我使用msvc10编译器。我试图运行一个简单的代码,但在cv::腐蚀(img,腐蚀,cv::Mat())行,它崩溃了。我没有收到任何错误消息,只是一个“program.exe已停止工作”的对话框。我转到“调试程序”,得到调用堆栈tbb.dll([下面的帧可能不正确和/或缺失,没有为tbb.dll加载符号]: ).我提到,从一开始我就在调试模式下构建时遇到问题(imread在调试模式下不工作,只有cvLoadImage),函数cv
我读到可以通过将tbb.pdb复制到tbb.dll旁边来解决这个问题,但它不起作用 只是为了补充Kamyar的评论:
如果在调试配置中编译,则可能还必须使用tbb调试版本,名为tbb_debug.dll。对于适用于Windows的OpenCV 2.4.1,可以在build\common\tbb下的OpenCV目录中找到它。只是为了补充Kamyar的评论:
如果在调试配置中编译,则可能还必须使用tbb调试版本,名为tbb_debug.dll。对于Windows版OpenCV 2.4.1,可以在build\common\tbb下的OpenCV目录中找到它。在我看来,您包含了错误的库文件。检查是否正在使用lib/dll文件的调试版本。我不确定Qt库文件,但区别主要是
opencv\u core230.lib
和opencv\u core230d.lib
。后者是调试版本,如果使用发布版本,可能会使程序崩溃。在我的.pro文件中,我包含了两个版本的lib文件。但只有cv::imread()在调试中不起作用。cv::腐蚀()和cv::扩张()在调试模式和发布模式下都会崩溃。您可以检查其他事项,当您在调试模式下访问tbb.dll时,一定是出了问题,因为您应该使用tbb_debug.dll,请检查您的.pro文件中是否正确分隔了调试/发布库文件,如前所述。在我看来,您包含了错误的库文件。检查是否正在使用lib/dll文件的调试版本。我不确定Qt库文件,但区别主要是opencv\u core230.lib
和opencv\u core230d.lib
。后者是调试版本,如果使用发布版本,可能会使程序崩溃。在我的.pro文件中,我包含了两个版本的lib文件。但只有cv::imread()在调试中不起作用。cv::腐蚀()和cv::扩张()在调试模式和发布模式下都会崩溃。您可以检查其他事项,当您在调试模式下访问tbb.dll时,一定是出了问题,因为您应该使用tbb_debug.dll,请检查您的.pro文件中是否正确分隔了调试/发布库文件,如前所述,我将tbb_debug.dll放在tbb.dll旁边,得到了相同的结果。我只有在Qt中有这个问题,在visualstudio中,一切都很好。我把tbb_debug.dll放在tbb.dll旁边,得到了相同的结果。我只有在Qt中有这个问题,在visualstudio中,一切都很好。
#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;
}