Mingw-64 在构建和安装后不会编译 openCV 代码

Mingw-64 will not compile openCV code after building and installing

本文关键字:编译 openCV 代码 构建 安装 Mingw-64      更新时间:2023-10-16

我使用 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"放在了错误的位置?

谢谢

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