在Ubuntu18.04上安装opencv及其使用

目录

  • 一、安装opencv3.4.12
    • 1.下载opencv3.4.12
    • 2.配置环境
  • 二、用opencv操作图片
  • 三、使用opencv库编写打开摄像头压缩视频的程序
  • 四、总结
  • 五、参考资料

一、安装opencv3.4.12

1.下载opencv3.4.12

(1)下载opencv3.4.12

下载地址 https://opencv.org/releases/#

(2)解压下载的安装包

sudo unzip opencv-3.4.12.zip

(3)更新数据

sudo apt-get update
sudo apt-get upgrade

(4)安装依赖包

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(5)创建编译文件夹

注意opencv安装的位置进行操作

mkdir my_build_dir

(6)进入创好的文件夹进行配置

cd my_build_dir
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make

执行make后会等待较长时间

达到100%后执行命令

sudo make install

至此OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境

2.配置环境

(1)修改opencv.conf文件

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

文本可能为空白,在文本里添加opencv库的安装路径

/usr/local/lib

(2)更新系统共享链接库

sudo ldconfig

(3)修改bash.bashrc文件

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)验证是否配置成功

查看opencv版本

pkg-config --modversion opencv

如图说明配置成功
在Ubuntu18.04上安装opencv及其使用_第1张图片

二、用opencv操作图片

(1)在opencv安装目录下新建一个文件夹test,并进入test创建一个test.cpp

mkdir test
cd test
touch test.cpp

(2)在test.cpp中写入如下内容

#include
#include
using namespace cv;

int main()
{
     
    //像素操作
    Mat src,dst;
    src = imread("/home/eric/opencv-3.4.12/test/wife.jpg");
    if(src.empty())
    {
     
        printf("can not load image \n");
        return 0;
    }
    namedWindow("input");//创建窗口
    imshow("input",src);//显示图片
    cvtColor(src, dst, COLOR_BGR2GRAY);//将图片转为灰度图
    namedWindow("output");
    imshow("output",dst);
    waitKey();
    return 0;
}

在Ubuntu18.04上安装opencv及其使用_第2张图片
(3)编译程序

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

编译命令详解https://blog.csdn.net/Rong_Toa/article/details/80117114

(4)运行程序

./test2

在Ubuntu18.04上安装opencv及其使用_第3张图片

三、使用opencv库编写打开摄像头压缩视频的程序

(1)现将宿主机的摄像头连接至虚拟机

方法https://blog.csdn.net/qq_42982742/article/details/103121511

(2)创建一个test2.cpp,写入如下内容

#include
using namespace cv;

int main()
{
     
	//从摄像头读取视频
	VideoCapture capture(0);
	//循环显示每一帧
	while (1)
	{
     
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("读取视频帧", frame);//显示当前帧
		waitKey(30);//延时30ms
	}

	system("pause");
	return 0;
}

(3)编译并运行程序

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

在Ubuntu18.04上安装opencv及其使用_第4张图片
问题

Mat是一个什么数据结构?

Mat是一个类。由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针。

为什么一定要加一句waitKey延时代码,删除它行不行?

waitKey()–这个函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环)。不能删除,一般在 imshow() 后要使用 waitKey(),给图像绘制留下时间,不然窗口会出现无响应情况,并且图像无法显示出来。

运行会发现这个程序按×退不出去,得按Ctrl+c强制退出,如何改进?

(4)改进程序

对 wiatKey() 函数做一次判断

修改代码如下

#include
using namespace cv;

int main()
{
     
	//从摄像头读取视频
	VideoCapture capture(0);
	//循环显示每一帧
	while (1)
	{
     
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("读取视频帧", frame);//显示当前帧
		//waitKey(30);//延时30ms
		if(waitKey(30)==27) //按esc键退出
		{
     
			break;
		}
	}
	system("pause");
	return 0;
}

四、总结

这一次实验使用到了OPENCV软件库,了解并学习了如何用opencv处理图片及视频,可以说是受益匪浅。

五、参考资料

1.OpenCV在Ubuntu下的图像编程
2.在Ubuntu18.04上安装opencv 3.4.1

你可能感兴趣的:(opencv)