gpt4 book ai didi

c++ - 对 cv::Mat::Mat() 的 undefined reference

转载 作者:行者123 更新时间:2023-12-05 03:26:11 25 4
gpt4 key购买 nike

我编写了一个简单的 C++ 代码来读取网络摄像头图像并显示它。但是,当我编译时,出现错误 - “未定义对 cv::Mat::Mat() 的引用”。我不知道为什么它显示两个垫子。这是我的代码:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
#include <stdlib.h>

int main() {
cv::VideoCapture cap(0);

if (!cap.isOpened){
std::cout << "Error opening camera" << std::endl;
}

cv::Mat img;

while(1){
cap >> img;
cv::imshow("output", img);
cv::waitKey(1);
}
}

我是这样编译的

g++ example.cpp `pkg-config --libs opencv4`

我不明白为什么会出现错误。感谢您的帮助!

最佳答案

这适用于我的 Linux:

g++ main.cpp -I/usr/include/opencv4/ -lopencv_core -lopencv_videoio -lopencv_highgui

虽然这不是可移植的,(使用 cmake 可以解决问题,但您需要先学习 cmake),我会提示您如何自己发现它。

每当您看到类似 Undefined reference to cv::Mat::Mat() 的错误时,请转到 https://docs.opencv.org/ 处的文档,选择最新版本(此处:https://docs.opencv.org/4.5.5/),在“搜索”窗口中输入链接器找不到的类/函数的名称(此处:Mat),读取定义它的 header (此处: #include<opencv2/core/mat.hpp> ),则缺少的库将具有名称 libopencv_core.*libopencv_mat.* .找到您机器中的任何一个(例如在 /user/lib 中)并链接它,省略扩展名和开头 lib在名字里。在我的例子中,具有完整路径的库位置是 /usr/lib/libopencv_core.so ,所以我将它与 -lopencv_core 链接起来.然后您需要以相同的方式找到剩余的库。

了解如何将其自动化,例如通过 Makefile , CMakeLists.txt或者只是一个简单的 bash 脚本。

关于c++ - 对 cv::Mat::Mat() 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71799459/

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