C++ OpenCV 3没有';我似乎不适合Qt

C++ OpenCV 3没有';我似乎不适合Qt,c++,qt,opencv,windows-8.1,C++,Qt,Opencv,Windows 8.1,我随后安装了OpenCV来使用Qt。 几年前,我将OpenCV与Qt一起使用,我必须自己构建OpenCV和Qt。我现在很高兴,通过只构建OpenCV就可以找到解决方案 像往常一样,CMake有很多错误。我不得不禁用一些附加功能,比如opencv_应用程序和示例,但随后它正确地构建了库。 动态libs不起作用,但我还是计划静态使用它 在Qt中链接OpenCV库之后,不要忘记图像的打开已经移动到“imgcodecs” 我尝试了一个简单的程序: #include <opencv.hpp>

我随后安装了OpenCV来使用Qt。 几年前,我将OpenCV与Qt一起使用,我必须自己构建OpenCV和Qt。我现在很高兴,通过只构建OpenCV就可以找到解决方案

像往常一样,CMake有很多错误。我不得不禁用一些附加功能,比如opencv_应用程序和示例,但随后它正确地构建了库。 动态libs不起作用,但我还是计划静态使用它

在Qt中链接OpenCV库之后,不要忘记图像的打开已经移动到“imgcodecs”

我尝试了一个简单的程序:

#include <opencv.hpp>

// ...

cv::Mat image = cv::imread("testimage.png");
cv::namedWindow("Test image");
cv::imshow("Test image", image);
cv::waitKey(1000);
结果是:

loadsave.cpp:-1:错误:未定义对的引用 `cv::String::deallocate()'


“ippicviSum_8u_C1R”是英特尔性能原件(ipp)库,现在随opencv免费提供。看起来您缺少下载,我通常从源代码构建opencv,但如果您有安装程序,可能需要单独获取Intel库

不需要使用cv::String类型,只需使用常规std::String即可。CV类型用于支持过时的C++平台上的旧嵌入式平台。可能是某些Qt宏正在重新定义“字符串”并破坏代码

编辑:问题还可能是您使用的是旧的C api。 相反,你应该:

cv::Mat image=cv::imread(“testimage.png”)

或者如果你还有问题


cv::Mat image=cv::imread(std::string(“testimage.png”)

问题似乎在于OpenCV 3.0与Qt5.4附带的mingw版本(491)不兼容


升级到使用mingw 492的Qt 5.5解决了这个问题。

谢谢,我会尝试一下。我从官方网页下载了OpenCV作为安装程序,但由于二进制文件与Qt不兼容,并且安装包中有一个源代码,我使用该源代码构建了它。关于
cv::String
:我怎么能不使用它?我没有特别包括它,似乎有一个简单的字符串文本被编译为
cv::string
。关于上次编辑:请看我的第一个示例。我首先使用了新的API,直到它不起作用后,我才尝试使用C API。从以前的经验来看,它总是在C++ API有问题的情况下工作的C API。(我将尝试只下载源代码,并检查该源代码是否与包含二进制文件的下载文件中的源代码不同,如果不同,那么我将在再次使用我进行实验的计算机时重建它)
#include <opencv.hpp>

// ...

cv::Mat image = cv::imread("testimage.png");
cv::namedWindow("Test image");
cv::imshow("Test image", image);
cv::waitKey(1000);
#include <cv.h>
#include <cvaux.h>
#include <cvwimage.h>
#include <cxcore.h>
#include <highgui.h>

// ...

IplImage *image = cvLoadImage("testimage.png");