首页 > 解决方案 > Mingw-64 在构建和安装后不会编译 openCV 代码

问题描述

我使用 Cmake 和 mingw32-make 构建并安装了 openCV。之后,我将生成的“opencv2”源文件夹复制到我安装的 mingw-64 编译器的“include”文件夹中。然后我将生成的文件从“lib”和“bin”复制到我安装的编译器的相应文件夹中。我终于尝试编译以下示例代码以确保正确安装:

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

using namespace cv;

int main()
{
    Mat image;// new blank image
    image = cv::imread("test.png", 0);// read the file
    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.
    imshow( "Display window", image );// show our image inside it.
    waitKey(0);// wait for a keystroke in the window
    return 0;
}

我尝试使用以下命令行命令编译代码:

g++ -o helloWorld helloWorld.cpp

这产生了以下错误:

helloWorld.cpp: In function 'int main()':
helloWorld.cpp:10:36: error: 'CV_WINDOW_AUTOSIZE' was not declared in this scope
     namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.

我怀疑我没有正确安装 openCV,但是当我在线搜索教程以解决这个问题时,它只是关于使用 mingw 的代码块。我只希望使用 mingw,而不是代码块。

是否有我缺少的链接器选项?我把“.dll”和“.dll.a”放在了错误的位置吗?

谢谢

标签: c++opencvcommand-linemingw-w64

解决方案


OpenCV 确实安装正确,问题是 CV_WINDOW_AUTOSIZE 是 openCV 的 C 实现使用的常量。当与 WINDOW_AUTOSIZE 交换时,代码然后通知我我没有链接正确的库。对于 openCV 4.2.0,我需要将“420”附加到所需库的末尾(例如:“-lopencv_core420”)。

进行这些更改后要编译的命令行参数是:

g++ -o helloWorld helloWorld.cpp -lopencv_core420 -lopencv_highgui420 -lopencv_imgcodecs420

推荐阅读