Deepin 20.8:安装OpenCV4,配置vscode+CMake作为基本开发环境

Deepin 20.8:安装OpenCV4,配置vscode+CMake作为基本开发环境

Excerpt

文章目录一、在Deepin上安装OpenCV1、安装基本工具2、安装OpenCV 依赖的库3、下载OpenCV源代码4、配置和编译OpenCV5、环境配置5.1、配置pkg-config环境5.2、配置动态库环境6、测试opencv6.1、测试方式一6.2、测试方式二7、卸载OpenCV4(通过源码编译安装)二、编写CMakeLists.txt三、安装VS Code四、配置VS Code五、Reference Link提示:以下是本篇文章正文内容,使用的硬件环境如下操作系统:Ubuntu 20.0.


文章目录


提示:以下是本篇文章正文内容,使用的硬件环境如下

操作系统:Deepin 20.04
OpenCV版本:OpenCV 4.7.0

一、在Deepin上安装OpenCV

1、安装基本工具

确保Ubuntu上有安装过程中使用到的一些工具,如果没有,请输入以下指令安装:

sudo apt install -y g++
sudo apt install -y cmake
sudo apt install -y make
sudo apt install -y wget unzip

输入 -v / --version 查看版本信息:

gcc/g++:gcc version 8.3.0 (Deepin 9.3.0-17ubuntu1~20.04)
make:GNU Make 4.2.1
cmake:cmake version 3.22.1

2、安装OpenCV 依赖的库

输入以下指令安装OpenCV依赖的基本库

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

支持python3:此步为可选,不设置也可以(亲测可行),如果设置了,在下一步cmake中下载ippicv可能会很慢

# python3支持
sudo apt install python3-dev python3-numpy
# streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

3、下载OpenCV源代码

安装4.7.0版本:

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip

或安装最新版本:

wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip

其他版本可从opencv官网下载
下载完后解压缩并重命名为opencv(源码包大小大概90M):

unzip opencv.zip
mv opencv-master opencv

4、配置和编译OpenCV

1)进入到下载好的opencv目录中,新建目录build并进入build目录:

cd opencv
mkdir build
cd build

2)使用cmake配置opencv

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

命令说明:
-D OPENCV_GENERATE_PKGCONFIG=YES OpenCV4以上默认不使用pkg-config,该编译选项开启生成opencv4.pc文件
3)使用make编译

make -j8

说明:-j4中的4指同时使用4个进程,可以根据电脑的进程数调整此值

4)使用make安装

sudo make install

默认安装路径为:
/usr/local/bin - executable files
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)

5、环境配置

5.1、配置pkg-config环境

opencv4.pc文件的默认路径为/usr/local/lib/pkgconfig/opencv4.pc,如果此目录下没有,可以使用以下命令搜索:

find / -iname opencv4.pc

将路径加入到PKG_CONFIG_PATH:

sudo gedit /etc/profile.d/pkgconfig.sh

在文件后面加入下面一行:

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

保存并退出后激活:

source /etc/profile

验证是否成功:

pkg-config --libs opencv4
-L/usr/local/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core

5.2、配置动态库环境

打开文件(可能为空文件):

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

在该文件末尾加上OpenCV的lib路径:

/usr/local/lib

使配置的路径生效:

sudo ldconfig

6、测试opencv

6.1、测试方式一

cd 到/opencv/samples/cpp/example_cmake目录下,依次执行以下命令:

cmake .
make
./opencv_example

该测试需要电脑有摄像头,如果启动摄像头看到了画面,说明安装成功。

6.2、测试方式二

在终端输入指令 pkg-config --modversion opencv4 即可看到OpenCV版本信息输出、
在这里插入图片描述

7、卸载OpenCV4(通过源码编译安装)

1)找到源码路径,在终端中进入到build目录,依次执行:

sudo make uninstall
cd ..
sudo rm -r build

2)在/usr/local下搜索opencv4

sudo find ./ -name opencv4*

将找到的opencv相关项删除即可,大概删除以下项:

sudo rm -r /usr/local/include/opencv4
sudo rm -r /usr/local/lib/pkgconfig/opencv4.pc
sudo rm -r /usr/local/lib/cmake/opencv4
sudo rm -r /usr/local/share/licenses/opencv4
sudo rm -r /usr/local/share/opencv4

二、编写CMakeLists.txt

在Deepin下,我们经常使用编写Cmake的方式来编译CV项目,CMakeLists.txt的语法比较简单,网上也有很多例子。
一个简单的参考示例如下:

# Time: 12:03 2022.12.22
# Author: xxx
# This is a file - "CMakeLists.txt" for OpenCV Project
cmake_minimum_required ( VERSION 3.15 )

set(PROJECT_NAME Lambda)
set(SRC Lambda.cpp)

project(${PROJECT_NAME})

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIRS})

add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

将CMakeLists.txt放置在源文件同级目录下,并执行以下指令

# 不一定要创建build文件夹,但是为了简洁,还是创建比较好
mkdir build
cd build 
cmake ..
make
# 这里是你的可执行性文件名的名字
./Lambda 

效果截图:
在这里插入图片描述
PS:没有图像是因为笔者没有打开摄像头,通过点击虚拟机右下方的摄像头图标,将本机前置摄像头重定向到虚拟中,即可展现图像
在这里插入图片描述


三、安装VS Code

要在Deepin系统上安装Visual Studio Code,请按照以下步骤操作:

首先,更新软件包索引并通过键入以下内容安装依赖项:

sudo apt update
sudo apt install software-properties-common apt-transport-https wget

使用以下 wget命令导入Microsoft GPG密钥:

wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -

并通过键入以下内容启用Visual Studio代码存储库:

sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

一旦启用 apt储存库,请使用以下方式安装最新版本的Visual Studio Code:

sudo apt update
sudo apt install code

现在,在你的Ubuntu系统上安装了VS Code,您可以通过在命令行中输入code或单击VS Code图标(Activities -> Visual Studio Code)来启动它。


四、配置VS Code

除了一些VScode通用配置之外,可以在VS code安装CMake Toos,在下方的build可以编译工程文件,点击竖三角可以运行运行程序,这样可以避免在终端中输入指令这种繁琐的方式运行程度,具体可以参考链接(亲测可行):

c_cpp_properties.json

界面上方中心会显示一个下拉菜单,显示三个选项:
WIN32
编辑配置(UI)
编辑配置(JSON)<----

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include/",
                "/usr/local/include/opencv4/",
                "/usr/local/include/opencv4/opencv2/"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}
launch.json

选择左侧任务栏的第四个选项运行和调试,点击创建launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "preLaunchTask": "build c program", 
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}", 
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
        }
    ]
}
tasks.json

终端—>配置任务—>创建tasks.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",	/* 定义任务是被作为进程运行还是在 shell 中作为命令运行,默认是shell,即是在终端中运行,因为终端执行的就是shell的脚本 */
			"label": "build c program",	/* 要与launch.json文件里的preLaunchTask的内容保持一致 */
			"command": "/usr/bin/g++",	/* 这里填写你的编译器地址 */
			"args": [
				/* 类似与qt的Pro文件里开始的那几句 */
				"-std=c++11",// 静态链接
                "-static-libgcc",
				"-Wall",// 开启额外警告
				
				/* 说明整个项目所需的头文件路径(.h)*/
				"-I","${workspaceFolder}/",
                "-I","/usr/local/include/",
                "-I","/usr/local/include/opencv4/",
                "-I","/usr/local/include/opencv4/opencv2/",
 
				/* 说明整个项目所需的源文件路径(.cpp) */
                "-g",
                "${fileDirname}/*.cpp",/* ${workspaceFolder}表示路径从当前项目文件夹开始 */
 
				"-o",	/* 编译输出文件的存放路径 */
				"${fileDirname}/${fileBasenameNoExtension}", /* 要与launch.json文件里的program的内容保持一致 */
				/* ${fileDirname} 是指 文件目录名 相当于${workspaceFolder}*/
				/* ${fileBasenameNoExtension}意思是指 该路径下没有扩展名的文件基本名称没有扩展名 */ 
				/* 也可以这样:"${workspaceFolder}/run.o", */
 
				/* OpenCV的lib库 */
				"/usr/local/lib/libopencv_*",
			],
			"options": {
                "cwd": "${workspaceFolder}"	/* 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录 */
			},
			"problemMatcher": [
				"$gcc"	/* 要使用的问题匹配程序。 */
			],
			"group": "build" /* 将任务标记为可通过 "运行生成任务" 命令访问的生成任务。*/
		}
	]
}
settings.json

打开vscode-文件-首选项-设置-扩展-Run Code configuration-找到code-runner:Executor.Map下在settings.json中编辑。

{
    "workbench.colorTheme": "Jetbrains Fleet",
    "glassit.alpha": 235,
    "editor.fontFamily": "'Monaco'",
    "editor.fontWeight": "bold",
    "files.autoSave": "afterDelay",
    "code-runner.executorMap": {


        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        //"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt `pkg-config opencv --libs --cflags opencv` && $dir$fileNameWithoutExt",
	   //"cpp": "cd $dir && g++ -std=c++11 `pkg-config --cflags --libs opencv4` $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",	
        //"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt `pkg-config opencv --libs --cflags opencv` && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "sml": "cd $dir && sml $fileName"
    },
    "code-runner.executorMapByFileExtension": {
    
        ".vb": "cd $dir && vbc /nologo $fileName && $dir$fileNameWithoutExt",
        ".vbs": "cscript //Nologo",
        ".scala": "scala",
        ".jl": "julia",
        ".cr": "crystal",
        ".ml": "ocaml",
        ".exs": "elixir",
        ".hx": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        ".rkt": "racket",
        ".scm": "csi -script",
        ".ahk": "autohotkey",
        ".au3": "autoit3",
        ".kt": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar",
        ".kts": "kotlinc -script",
        ".dart": "dart",
        ".pas": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        ".pp": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        ".d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        ".hs": "runhaskell",
        ".nim": "nim compile --verbosity:0 --hints:off --run",
        ".csproj": "dotnet run --project",
        ".fsproj": "dotnet run --project",
        ".lisp": "sbcl --script",
        ".kit": "kitc --run",
        ".v": "v run",
        ".vsh": "v run",
        ".sass": "sass --style expanded",
        ".cu": "cd $dir && nvcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        ".ring": "ring",
        ".sml": "cd $dir && sml $fileName"
    },
    "editor.fontVariations": false,
    "editor.fontLigatures": false
}

五、QT 配置

INCLUDEPATH +=  /usr/local/includel\
                /usr/local/include/opencv4\
                /usr/local/include/opencv4/opencv2

LIBS += /usr/local/lib/libopencv_highgui.so \
        /usr/local/lib/libopencv_highgui.so.4.7.0 \
        /usr/local/lib/libopencv_core.so\
        /usr/local/lib/libopencv_imgproc.so \
        /usr/local/lib/libopencv_imgcodecs.so

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值