ubuntu下opencv C++环境搭建

ubuntu下opencv C++环境搭建

由于很少用C++,对于opencv的C++使用感到很头疼,光是环境搭建就让我google了好久,官方也没有给出细节操作,为什么就不能像python一样一个pip就搞定了呢?所幸终于调通,遂小记一手,以免以后再次被搞得头皮发麻

opencv 安装

参考我之前的文章,完成基本的opencv安装(只是得到文件,还得配置一些path)

常见错误

先放出测试代码

#include <iostream>
using namespace std;

#include "opencv2/opencv.hpp"
using namespace cv;

int main()
{
    VideoCapture capture(0);    //调用摄像头
    while (1)   //循环显示每一帧
    {
        Mat frame;  //储存一帧图像
        capture>>frame; //读取当前帧
        imshow("调用摄像头", frame); //显示当前读入的一帧图像
        waitKey(10);    //延时10ms

    }
    return 0;
}

这是一段调用摄像头的测试代码,很多博客都是用的图片测试。我真服了,我系统里就没有图片。直接用摄像头不就完事了吗?
接下来就是怎么编译这段代码了
如果直接拿vscode run的话会出莫名奇妙的错误,如

/tmp/ccXURwsj.o:在函数‘main’���:
tempCodeRunnerFile.cpp:(.text+0x2b):对‘cv::VideoCapture::VideoCapture(int)’未定义的引用
tempCodeRunnerFile.cpp:(.text+0x3e):对‘cv::VideoCapture::operator>>(cv::Mat&)’未定义的引用
tempCodeRunnerFile.cpp:(.text+0x99):对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用
tempCodeRunnerFile.cpp:(.text+0xc1):对‘cv::waitKey(int)’未定义的引用
tempCodeRunnerFile.cpp:(.text+0x118):对‘cv::VideoCapture::~VideoCapture()’未定义的引用

常见的还有找不到opencv.hpp的

fatal error: opencv2/opencv.hpp

这些都是没有设置对路径造成的,g++找不到你的opencv文件。接下来就来配置一手。

环境配置

在我之前那篇文章中已经提到了opencv.pc的问题
将下面的代码放到.bashrc最后一行

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

然后尝试编译代码

g++ `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs` 

应该能成功,生成编译好的程序。我还没找到能直接像下面那样编译的方法

g++ opencv.cpp -o opencv

接下来运行,可能会出现

error while loading shared libraries: libopencv_highgui.so.4.1: cannot open shared object file: No such file or directory

在文件夹中查找该文件,发现他其实就在/usr/local/lib中
打开/etc/ld.so.conf
在文件中加上一行

include /usr/loacal/lib

然后生效

sudo ldconfig

这个时候应该就能运行了

### 如何在C++环境中设置和配置OpenCV #### 创建项目并集成OpenCV库 为了使C++应用程序能够利用OpenCV的功能,需要确保编译器知道在哪里查必要的头文件以及链接所需的库文件。对于Linux平台上的Ubuntu操作系统而言,在完成通过包管理工具如`apt-get`安装之后,可以直接创建源代码文件来测试安装是否成功[^1]。 ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("path_to_image.jpg"); if (image.empty()) { printf("Could not open or find the image.\n"); return -1; } imshow("Image", image); waitKey(0); return 0; } ``` 这段简单的程序尝试加载一张图片,并显示出来;如果路径指定有误,则会给出提示信息。这表明只要正确设置了开发环境,就可以顺利调用OpenCV函数了。 #### 设置Windows系统的环境变量 为了让命令行或其他IDE识别到OpenCV的相关动态链接库(.dll),应当把它们所在的文件夹路径加入到系统的PATH环境变量里去。具体来说就是将OpenCV安装目录下对应的版本子文件夹(例如 `E:\download_tool\opencv4\opencv\build\x64\vc16\bin`)添加进去[^2][^4]。 #### 配置Visual Studio Code编辑器 当涉及到跨平台支持或者偏好轻量级IDE时,VSCode是一个不错的选择。要在该环境下工作,除了上述提到的操作外还需要额外几步: - 安装适用于C/C++扩展插件; - 编辑`.vscode/c_cpp_properties.json`以定义包含路径与预处理器宏定义; - 修改`tasks.json`以便于构建过程能访问正确的编译选项; - 更新`launch.json`从而允许调试功能正常运作[^3]。 以上措施共同作用使得开发者可以在任何主流平台上高效地开展基于OpenCV框架的应用开发活动。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值