gpt4 book ai didi

c++ - OpenCV 3 似乎不适用于 Qt

转载 作者:行者123 更新时间:2023-11-28 02:20:17 24 4
gpt4 key购买 nike

我关注了this tutorial安装 OpenCV 以与 Qt 一起工作。几年前,我之前将 OpenCV 与 Qt 一起使用,我不得不自己构建 OpenCV 和 Qt。我现在很高兴只构建 OpenCV 就可以找到解决方案。

像往常一样,CMake 有很多错误。我不得不禁用一堆额外的东西,比如 opencv_apps 和示例,但它随后正确地构建了库。动态库不起作用,但我打算静态地使用它。

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

LIBS += -lopencv_core300 -lopencv_highgui300 -lopencv_imgproc300
LIBS += -lopencv_imgcodecs300

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

#include <opencv.hpp>

// ...

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

它没有用。

matrix.cpp:-1: error: undefined reference to `ippicviSum_8u_C1R@20'

在 Google 上搜索“ippicviSum”绝对不会返回任何结果(好吧,直到这个问题被他们抓取)。

我知道这些库至少有些工作,或者至少是找到,因为如果我从项目文件中删除 lopencv_imgcodecs300,我会得到一个额外的错误,它包含库时不存在:

error: undefined reference to `cv::imread(cv::String const&, int)'


我放弃了 C++ API,尝试使用经典的 C API。 (在我 2 年前的试用中,C++ API 也有一些问题 - 基本的打开和显示工作,但更复杂的算法会导致链接器错误,所以我求助于 C API,它工作正常)

#include <cv.h>
#include <cvaux.h>
#include <cvwimage.h>
#include <cxcore.h>
#include <highgui.h>

// ...

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

结果:

loadsave.cpp:-1: error: undefined reference to `cv::String::deallocate()'

最佳答案

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

不需要使用cv::String类型,使用普通的std::string即可。 cv 类型用于支持带有过时 c++ 编译器的旧嵌入式平台。有可能是某些 Qt 宏重新定义了“String”并破坏了代码?

编辑:问题也可能是您使用的是旧版 C api。而是做:

cv::Mat image = cv::imread("testimage.png");

或者如果您还有问题,

cv::Mat image = cv::imread(std::string("testimage.png"));

关于c++ - OpenCV 3 似乎不适用于 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com