linux安装C++ opencv

1. 安装依赖

opencv中的一些图像、视频相关的功能需要一些依赖,因此在安装opencv之前需要先安装这些依赖;在使用apt安装相关依赖时,会出现无法安装的情况,这时可以用aptitude来降级安装。

名称 apt package 名称 功能
编译系统 build-essential cmake pkg-config 生成 OpenCV
图像库 libpng-dev libjpeg-dev 提供各类图像格式的编解码
OpenBLAS libopenblas-dev 利用 CPU 向量运算指令为大量算法提供加速。
Eigen3 libeigen3-dev 提供线性代数相关算法支持
Intel TBB libtbb-dev 在 Intel CPU 上提供高性能并发计算支持
FFMPEG libavcodec-dev libavformat-dev libswscale-dev 提供视频编解码能力
GStreamer libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev 提供流媒体处理能力
GTK libgtk-3-dev libcanberra-gtk-module libcanberra-gtk3-module 图形化用户界面

2. 安装opencv

2.1 从源码安装

参考:在 Linux 系统中编译安装 OpenCV - 知乎

2.2 直接安装

参考: OpenCV 的最简安装方式(Linux) - 知乎

3. 验证

新建一个文件,命名为:test.cc:

cpp 复制代码
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"

int main(int argc, char **argv)
{
	auto img_path = argv[1];
	cv::Mat img = cv::imread(img_path);

	if(img.empty())
	{
		std::cout<<"----------image read error!--------------"<<std::endl;
		return 0;
	}

	cv::Scalar color;
	color[0]=0;color[1]=0;color[2]=255;//    红色
	cv::Rect rec1;
    rec1=cv::Rect(10,10,500,500);
	cv::rectangle(img, rec1,color,100,-1,0);
	cv::imwrite("result.jpg", img);
	
	cv::namedWindow("image", cv::WINDOW_NORMAL);
	cv::imshow("image", img);
	cv::waitKey(0);
	

	// std::count<<img.empty()<<std::endl;

	std::cout<<"done!"<<std::endl;
	return 0;
}

编写CMakeLists.txt:

bash 复制代码
# cmake needs this line
cmake_minimum_required(VERSION 3.1)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# Declare the executable target built from your sources
add_executable(opencv_example test_cv.cc)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example PRIVATE ${OpenCV_LIBS})

在同级目录下新建build文件夹,并进入,编译,运行:

bash 复制代码
mkdir build
cd build
cmake ..
make -j8
./opencv_example

如果没有报错,则说明安装成功。

若有报错,大部分情况都是因为缺少相应依赖,通过第1步中的方法安装即可。

相关推荐
h39746 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
夏幻灵7 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码7 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客8 小时前
vs 怎么根据dll 生成lib文件
c++·qt
bkspiderx9 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆9 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光9 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园9 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西10 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨10 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言