基于Ubuntu安装opencv以及相关操作

目录

一、基于Ubuntu下安装opencv

二、相关操作之图片 

三、相关操作之视屏 

四、总结

五、参考资料


一、基于Ubuntu下安装opencv

1、opencv依赖环境的安装

1.1 安装cmake

首先,打开Ubuntu虚拟机,打开中端,输入一下命令行。

sudo apt-get install cmake

1.2 依赖环境的安装

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

1.3 下载opencv

首先,打开虚拟机,在虚拟机浏览器上输入Releases - OpenCV 选择对应的opencv版本。

注:下载opencv时,由于网络原因,可能下载会很慢,可以选择国内快速下载地址:OpenCV/opencv_contrib国内快速下载 | 绕云技术博客

2、压缩包的安装 

2.1 文件解压

选择下载好的压缩包,将压缩包解压到对应的文件夹中(可以自己选择,无定性要求)

2.2 安装包程序安装

打开已解压的压缩包,构建一个build文件 

mkdir build

打开build文件夹

cd build

输入下面代码进行安装

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

等待安装。

2.3 进行编译

sudo make -j8
可以使用sudo make -j 8 、sudo make -j4 、sudo make

注:这里所需要的时间较长,耐心等待,如果出现虚拟机卡死的情况,关闭虚拟机,在重新操作即可。 

2.4 进行安装 

sudo make install

3、相关环境的配置

用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路

sudo gedit /etc/ld.so.conf

结果如下图:(该图为引用结果) 

 运行sudo ldconfig,
修改bash.bashrc文件 

sudo gedit /etc/bash.bashrc 

在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH 

                                                                   (引用图)

然后输入

source /etc/bash.bashrc

4、检验 

pkg-config opencv --modversion

  结果如下:                     

说明opencv安装成功。

二、相关操作之图片 

1、代码编写

首先创建一个代码存放文件夹 code ,然后进入文件夹中打开中端。

gedit test1.cpp
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
    double scale = -3; 

	IplImage* image = cvLoadImage("myp.jpg");
	argc == 2? cvLoadImage(argv[1]) : 0;
	
	cvShowImage("Image", image);
	
	
	if (!image) return -1; 	center = cvPoint(image->width / 2, image->height / 2);
	for (int i = 0;i<image->height;i++)
		for (int j = 0;j<image->width;j++) {
			double dx = (double)(j - center.x) / center.x;
			double dy = (double)(i - center.y) / center.y;
			double weight = exp((dx*dx + dy*dy)*scale);
			uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
			ptr[0] = cvRound(ptr[0] * weight);
			ptr[1] = cvRound(ptr[1] * weight);
			ptr[2] = cvRound(ptr[2] * weight);
		}

	Mat src;Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);

    cvNamedWindow("test",1);  	imshow("test", src);
	 cvWaitKey();
	 return 0;
}

注:在进行代码输入时,需要将对应代码中的文件名改为自己文件的名字。 

 2、编译文件

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

解释:

gcc编译器:gcc + 文件名 + -o + 输出文件流名称 +` 支持包 

在同一文件夹下准备一张图片,文件名为:myp.jpg 

 3、输出结果

./test1

 如果出现问题,可以参考下述参考链接(导致的原因可能是由于opencv对应的库文件未正确配置)

error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file解决方法_越努力越幸运的博客-CSDN博客

三、相关操作之视屏 

1、配置Ubuntu摄像头

详情参考链接:Ubuntu18.04下OpenCV3.4.11的安装及使用示例_ssj925319的博客-CSDN博客

 2、视屏的播放

2.1 代码编写

具体操作如上,这里就只附上对应代码了。

gedit test2.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
	//从摄像头读取视频
	VideoCapture capture("myv.avi");
	//循环显示每一帧
	while(1){
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		if(frame.empty())//播放完毕,退出
			break;
		imshow("读取视频帧",frame);//显示当前帧
		waitKey(30);//掩饰30ms
	}
	system("pause");
	return 0;
}

代码讲解:

如果语句:VideoCapture capture(0),后面的参数设置为 0 ,则从摄像头读取视频并循环显示每一帧;如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。
while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像,有关 Mat 详解请看:OpenCV中Mat数据结构
语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms ,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。
 

如果要求打开你硬盘上一个视频文件来播放,第5行代码应修改为:

VideoCapture capture("xxxx.mp4");       //已上传的文件名

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

waitkey这个命令控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,就只有一个空窗口一闪而过,所以必须加waitkey。

2.2 编译 test2.cpp 文件

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

2.3 输出结果

./test2

 3、视屏的录制

3.1 编写代码

gedit test3.cpp

test3.cpp:

/*********************************************************************
打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
*********************************************************************/
#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

int main()
{
	//打开电脑摄像头
	VideoCapture cap(0);
	if (!cap.isOpened())
	{
		cout << "error" << endl;
		waitKey(0);
		return 0;
	}

	//获得cap的分辨率
	int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH));
	int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT));
	Size videoSize(w, h);
	VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);
	
	Mat frame;
	int key;//记录键盘按键
	char startOrStop = 1;//0  开始录制视频; 1 结束录制视频
	char flag = 0;//正在录制标志 0-不在录制; 1-正在录制

	while (1)
	{
		cap >> frame;
		key = waitKey(100);
		if (key == 32)//按下空格开始录制、暂停录制   可以来回切换
		{
			startOrStop = 1 - startOrStop;
			if (startOrStop == 0)
			{
				flag = 1;
			}
		}
		if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘
		{
			break;
		}

		if (startOrStop == 0 && flag==1)
		{
			writer << frame;
			cout << "recording" << endl;
		}
		else if (startOrStop == 1)
		{
			flag = 0;
			cout << "end recording" << endl;
			
		}
		imshow("picture", frame);
	}
	cap.release();
	writer.release();
	destroyAllWindows();
	return 0;
}

此代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。改进方法如下:

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
  VideoCapture capture(0);
  int key;
  while(1)
  {
     Mat frame;
     capture >> frame; 
     key = waitKey(100);
      if (key == 27)
	{
		break;
	}

     imshow("读取视频帧",frame);
     waitKey(30);
   }
     system("pause");
     return 0;
}

3.2 编译 test3.cpp 文件 

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

3.3 输出结果

./test3

 录制视屏时,按下空格开始,按ESC结束

 生成了一个AVI格式视屏。

更多 OpenCV 的学习教程可以参考:OpenCV教程:超详细的OpenCV入门教程,值得收藏!
 

四、总结

   在本次实验中,opencv的安装可谓是花费了我绝大数时间。其中,我也遇到了雨多问题,但在我的不懈努力以及多方面的查阅资料下,我最终还是成功的安装了opencv。至于opencv的相关操作,在网上前辈的帮助下,我也较为顺利的完成了本次实验。

五、参考资料

ubuntu安装opencv的正确方法_陶陶name-CSDN博客_ubuntu安装opencv

Ubuntu18.04下OpenCV3.4.11的安装及使用示例_ssj925319的博客-CSDN博客

​​​​​​error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file解决方法_越努力越幸运的博客-CSDN博客

 浏览icon-default.png?t=L892https://mooc1.chaoxing.com/ueditorupload/read?objectId=2b8aea8003e93aaf6326bdba9a606cae&fileOriName=%E7%AC%AC4%E5%91%A8%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E4%BD%9C%E4%B8%9A-opencv%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99.docx


 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 22 (通常指的是基于Linux的Ubuntu操作系统版本) 上安装OpenCV(开源计算机视觉库)需要以下几个步骤: ### 第一步:更新系统 首先,在开始安装任何软件之前,确保您的Ubuntu系统是最新的。 ```bash sudo apt update sudo apt upgrade ``` ### 第二步:安装必要的依赖库 接下来,安装一些基础依赖库,如`libjpeg-dev`, `libpng-dev`, `zlib1g-dev`等,这些都是OpenCV工作所需的基本组件。 ```bash sudo apt install libjpeg-dev libpng-dev zlib1g-dev ``` ### 第三步:安装OpenCV 可以使用`apt-get`包管理器来直接安装OpenCV。通常,可以通过运行以下命令来获取并安装最新的OpenCV版本: ```bash sudo apt install python3-opencv ``` 这个命令可能会安装适用于Python 3的OpenCV库。如果有特定需求,例如需要C++版本的库或者其他特定构建选项,您可能需要从源码进行自定义安装,这涉及到更多步骤并且可能需要编译环境(如CMake)和构建脚本的支持。 ### 第四步:验证安装成功 为了确认OpenCV已经成功安装,并且可以正常使用,可以尝试导入Python中的cv2模块并运行一个简单的图像处理脚本来检查是否能够正常加载图像。 #### 对于Python用户: ```python import cv2 # 示例代码用于读取图像文件 image = cv2.imread('test.jpg') if image is not None: print("成功加载了图像") else: print("无法找到图像文件") # 显示图片 cv2.imshow('Test Image', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 对于C++用户: 通常,C++的使用方式会包含一些额外的库路径配置以及更复杂的项目设置,这里不再详细展开。 ### 相关问题: 1. 安装OpenCV时遇到权限错误如何解决? 2. OpenCV与Python的集成过程中遇到了兼容性问题,该如何排查与解决? 3. 如何在Ubuntu安装OpenCV的CUDA版本以便更好地利用GPU加速?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值