Ubuntu20.04在vsCode配置opencv

2023-05-16

一、下载opencv:

https://opencv.org/releases/
我下载的为opencv4.5.4版本,可以直接下载.zip文件,可以选择其他版本。

Sources版本即为.zip版本
Sources版本即为.zip版本:

二、安装opencv:

Linux默认下载目录为Downloads,在这里用终端打开
在这里插入图片描述

1、解压

输入命令:unzip opencv-4.5.4.zip
如果报错,安装unzip:sudo apt-get install unzip

2、安装依赖的库:

先更新一下

sudo apt update
sudo apt upgrade
sudo apt install g++
sudo apt install cmake
sudo apt install make

3、安装opencv依赖项

此处只是选择部分opencv的依赖项,因为opencv的依赖项很多,部分依赖项也不一定用得上。可以参考网上的资料安装自己需要的依赖。

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev

解压完发现opencv是一个cmake工程,里面有CMakeList.txt,因此需要cmake生成Makefile,
建一个build文件夹并进去:mkdir buildcd build

4、使用cmake工具:

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

其中需要添加OPENCV_GENERATE_PKGCONFIG=YES进去,否则后面添加路径的时候会报错:
“->pkg-config --modversion opencv”时显示“ No package ‘opencv’ found”
使用make或者make -j4make -j8 make -12,来编译,j后面这个数字时调用多线程进行编译,请根据自己的电脑性能选择,否则容易报错。

“fatal error: Killed signal terminated program cc1plus compilation terminated.”

5、使用make install来安装。

sudo make install

opencv4的安装路径为
后面配置路径会用到:

/usr/local/include/opencv4

库文件的路径为:

/usr/local/lib

三、配置OpenCV编译环境

1、添加路径:

首先将OpenCV的库添加到路径,从而可以让系统找到
命令:

sudo gedit /etc/ld.so.conf.d/opencv4.conf 

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib

注意,此处如果在cmake的时候设置了例如CMAKE_INSTALL_PREFIX=/usr/local/opencv4 的其他路径,这部分请根据自己情况改变。

2、使得刚才的配置路径生效:

执行如下命令:

sudo ldconfig 

3、配置bash:

sudo gedit /etc/bash.bashrc

在文件最后添加:

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

4、执行如下命令使得刚才的配置生效:

source /etc/bash.bashrc 

5、更新一下:

sudo updatedb 

如果这里报错,需要先安装mlocate

apt-get install mlocate 

6、配置完成,检验一下

可以输入pkg-config --modversion opencv4来查看opencv的版本,如果输出4.5.4则表明安装成功。
在这里插入图片描述

如果像下面这样报错,请检查自己路径配置。实在不行,重新安装,重复以上步骤。
在这里插入图片描述

四、make过程中可能会出错:

fatal error: Killed signal terminated program cc1plus compilation terminated.

这是因为虚拟机的内存小了,有三个方法解决

1、直接扩大虚拟机的内存;

直接在虚拟机设置中,增加分配的内存。
在这里插入图片描述

2、增加swap分区

首先使用free -m来查看swap分区大小
在这里插入图片描述

(1)创建分区路径

sudo mkdir -p /var/cache/swap/

(2) 设置分区的大小,bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB

sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64

(3) 设置该目录权限

sudo chmod 0600 /var/cache/swap/swap0

(4)创建SWAP文件

sudo mkswap /var/cache/swap/swap0

(5)激活SWAP文件

sudo swapon /var/cache/swap/swap0

(6) 查看SWAP信息是否正确

sudo swapon -s

此处参考https://blog.csdn.net/weixin_44796670/article/details/121234446

3、减少make中进程的数量

更改以上设置,重新编译就不再会报错。

五、VSCode配置

新建vscode工程,

1、配置 c_cpp_properties.json文件

按下**“ctrl+shift+p”**,搜索打开如下图所示第一个配置:
在这里插入图片描述
c_cpp_properties.json文件,往里面添加opencv4路径:

"/usr/local/include/opencv4"

在这里插入图片描述
注意:我安装的opencv的路径是 include/opencv4/opencv2
也可以定义为

"/usr/local/include/"

实现一个软链接即可

cd   /usr/local/include/
sudo  ln  -s   opencv4/opencv2   opencv2

在这里插入图片描述

2、配置tasks.json文件:

在这里插入图片描述

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",  /* 与launch.json文件里的preLaunchTask的内容保持一致 */
            "command": "/usr/bin/g++",
            "args": [
                "-std=c++11",
                "-g",
                //"${file}",   /* 编译单个文件 */
                "${fileDirname}/*.cpp",  /* 编译多个文件 */
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",  /* 输出文件路径 */
 
                /* 项目所需的头文件路径 */
                "-I","${workspaceFolder}/",
                "-I","/usr/local/include/",
                "-I","/usr/local/include/opencv4/",
                "-I","/usr/local/include/opencv4/opencv2",
 
                /* 项目所需的库文件路径 */
                "-L", "/usr/local/lib",
 
                /* OpenCV的lib库 */
                "/usr/local/lib/libopencv_*",
 
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

3、配置launch.json文件:

按下**“ctrl+shift+p”**,搜索launch.json打开如下图所示第一个配置:
在这里插入图片描述

{

    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",  //程序文件路径
            "args": [],  //程序运行需传入的参数
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,   //运行时是否显示控制台窗口
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

写个简单的读取图片程序:可以跑通

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;

int main(int argc, char* argv[]) {
    const char* imagename = "xiaomaolv.jpg";//此处为的图片路径
    //从文件中读入图像
    cv::Mat img = cv::imread(imagename, 1);
    //如果读入图像失败
    if (img.empty()) {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    }
    cv::imshow("image", img); //显示图像
    cv::waitKey();
    return 0;
}

在这里插入图片描述
至此,我们实现了在Ubuntu20.04中安装opencv并配置完成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04在vsCode配置opencv 的相关文章

  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • 使用 Azure 机器学习检测图像中的符号

    4年前我发帖这个问题 https stackoverflow com q 6999920 411094不幸的是 得到的一些答案超出了我的技能水平 我刚刚参加了一次构建巡演会议 他们在会上谈论了机器学习 这让我想到了使用 ML 来解决我的问题
  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • 有人曾经在 MacOS 10.6 上使用过 OpenCV 和 Python 2.7 吗?

    在过去的 6 个月里 我一直断断续续地尝试让 OpenCV 在 MacOS 上与 Python 配合使用 每次有新版本发布时 我都会再次尝试并失败 我已经尝试过 64 位和 32 位 并且 xcode gcc 和 gcc 都是通过 macp
  • 在 Android 中使用 OpenCV 查找图像匹配

    我正在尝试构建一个 Android 应用程序 该应用程序可以比较设备相机拍摄的照片 以在一组图像中找到匹配项 我已经在 Android Studio 上配置了 OpenCV 但仅此而已 有人可以通过链接到资源或建议教程来提供帮助吗 Open
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • 如何在 OpenCV 中将 Float Mat 写入文件

    我有一个矩阵 Mat B 480 640 CV 32FC1 包含浮点值 我想将此矩阵写入一个可以打开的文件Notepad https en wikipedia org wiki Windows Notepad or 微软Word https
  • OpenCV Python RTSP 流

    我想使用 RTSP 从 IP 摄像机流式传输视频 但我有一个问题 我已经安装了先决条件 而且我的 RTSP 链接可以在 VlC 播放器上运行 但是当我在编辑器中尝试并运行它时 它说找不到相机 这是我的代码 import cv2 import
  • 如何将k4a_image_t转换为opencv矩阵? (Azure Kinect 传感器 SDK)

    我开始尝试使用 Azure Kinect Sensor SDK 我经历了官方操作指南 https learn microsoft com en us azure Kinect dk about sensor sdk sensor sdk 我
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • Opencv 运动检测与跟踪

    我需要在网络摄像头的视频帧中进行强大的运动检测和跟踪 背景总是一样的 目的是识别物体的位置 如果可能的话没有阴影 但并不急于去除阴影 我已经尝试过用于背景减法和阈值化的opencv算法 但这仅取决于一个图像作为背景 如果背景的亮度 或相机自
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • Opencv C++ 检测并裁剪图像上的白色区域

    我在网上搜索过 已经找到了一些方法来完成我想要的事情 但是与我需要的相比 这些方法的效率较低 我有一个 kinect 使用 Microsoft SDK 当前正在获取一个移除背景的人 将结果保存在 3 通道 Mat 中 并将该人从背景中移除
  • 线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有opencv_java249

    我目前正在尝试在我的 32 位笔记本电脑上设置 OpenCV 但我不断收到一条令我困惑的错误消息 Exception in thread main java lang UnsatisfiedLinkError no opencv java2
  • OpenCV OpenNI 校准kinect

    我使用 home 通过 kinect 进行捕捉 capture retrieve depthMap CV CAP OPENNI DEPTH MAP capture retrieve bgrImage CV CAP OPENNI BGR IM
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置

随机推荐