栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Ubuntu18.04下OpenCV3.4.11的使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ubuntu18.04下OpenCV3.4.11的使用

目录

一、OpenCV安装

1.下载网址

2.安装过程

二、打开图片进行特效显示

1.创建文件夹并进入

2.程序代码

3.编译test1.cpp文件

4.准备图片

5.输出结果

三、打开视频

1.虚拟机获取摄像头权限

2.程序代码

3.准备视频

4.编译test2.cpp文件

5.输出结果

四、录制视频

1.程序代码

2. 编译 test3.cpp 文件

3.输出结果

​五、总结

六、参考资料


一、OpenCV安装

1.下载网址

OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记

2.安装过程

安装过程详见以下链接

【嵌入式】Windows10&Ubantu16.04&树莓派3B+安装opencv教程_cungudafa的博客-CSDN博客

二、打开图片进行特效显示

1.创建文件夹并进入

mkdir code

cd code

 

2.程序代码

vim test1.cpp

#include 
#include 
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
    double scale = -3; 

	IplImage* image = cvLoadImage("lena.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;iheight;i++)
		for (int j = 0;jwidth;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;
}

3.编译test1.cpp文件

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

 

 4.准备图片

在同文件夹下准备一张图片,如下图:

5.输出结果

执行以下命令

./test1

如上图,出现Failed to load module "canberra-gtk-module"的错误,经查阅以下资料https://blog.csdn.net/u014337397/article/details/81068991

执行以下语句

sudo apt-get install libcanberra-gtk-module

 输入后自动执行安装,安装过程中,需要输入”Y”进行确认,安装完成后,重新执行程序,则错误不再出现。

再次执行./test1命令,发现并未在当前文件夹生成.png文件,结果是因为test1.cpp程序代码中要打开的图片名称与文件夹中图片名称不符,更改图片名称与代码要打开图片名称一致即可(或更改代码中要打开图片名称与文件夹中图片名称一致),如下图:

再次执行./test1命令,生成.png文件,成功,如下图:

 三、打开视频

1.虚拟机获取摄像头权限

(1)使用快捷键 Win + R ,输入 services.msc ,并回车

(2) 找到 VMware USB Arbitration S… 服务,确保启动

(3)点击 “ 虚拟机 ” ,然后点击 “设置”

(4)选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.1 ” ,并点击确定

(5)选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ Quanta HP HD Camera ” ,最后点击 “ 连接 ” 

 

若虚拟机右下角出现,则连接成功

2.程序代码

vim test2.cpp

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

注:1.如果要求打开硬盘上一个视频文件来播放,只需在VideoCapture capture()括号中输入视频文件的名称,且使用""括起来。

2.while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像。

3.语句:waitKey(30) 中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms ,该语句是不能删除的,否则会执行错误,无法播放视频或录制视频。

 3.准备视频

在同文件夹下准备一段视频并改名为man.mp4(或直接更改test2.cpp程序代码中要打开的视频文件名称与文件夹下视频名称一致),如下图:

4.编译test2.cpp文件

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

 

5.输出结果

执行以下命令

./test2 

 成功打开视频,如下图:

四、录制视频

1.程序代码

vim test3.cpp

#include
#include 
#include
#include
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(cap.get(CV_CAP_PROP_frame_WIDTH));
	int h = static_cast(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;
}

 注:1.该程序代码按下空格键开始录制,再次按下空格键暂停录制,来回切换。

2.用鼠标关不掉图像显示窗口,该程序代码只需按下esc键即可退出程序并保存视频文件。

2. 编译 test3.cpp 文件

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

 

3.输出结果

执行以下命令

./test3

 如下图:

按下空格键开始录制、暂停录制视频,按下esc键退出程序并保存录制视频,在当前文件夹下生成一个.avi文件即是所录制的视频。

 五、总结

通过此次对OpenCV的安装与使用,让我对OpenCV编程有了初步了解,也让我对OpenCV的使用产生了一定的兴趣。同时,在使用过程中也遇到了一些问题,还好在百度以及相关资料的帮助下顺利的解决了这些问题。另外,我仍需在课下继续学习,去探索关于OpenCV编程的更多魅力。
 

六、参考资料

Ubuntu18.04下OpenCV3.4.11的安装及使用示例_ssj925319的博客-CSDN博客目录一、认识 OpenCV二、安装 OpenCV参考资料安装环境:VMware虚拟机安装的Ubuntu 18.04系统OpenCV版本:3.4.1一、认识 OpenCV开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包运动估计面部识别系统手势识别人机交互移动机器人动作理解物体识别分割和识别实体影像立体视觉:来自两个摄像机的深度感知运动中的结构(SFM)运动跟踪增强现实为了支持上述一些领域,Ophttps://blog.csdn.net/ssj925319/article/details/109231145

【嵌入式】Windows10&Ubantu16.04&树莓派3B+安装opencv教程_cungudafa的博客-CSDN博客目标:在windows、ubuntu、树莓派系统中安装opencv2.4.x 或者opencv3.4.x,在windows、ubuntu、树莓派3个系统下,依次编写一个图片特性处理代码程序。(要求同时显示原始图片和特效图片,并保存特效图片到文件中。)(一)Windows10安装opencv3.4.1安装opencv3.4.1:官网下载Windows版配置系统环境变量:在path中添...https://cungudafa.blog.csdn.net/article/details/84451066 Linux学习笔记(十八) -- 运行程序,出现Failed to load module "canberra-gtk-module"错误的解决方案_以文会友-CSDN博客https://blog.csdn.net/u014337397/article/details/81068991

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号