IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 在unbuntu下使用opencv -> 正文阅读

[人工智能]在unbuntu下使用opencv

在unbuntu下使用opencv

1在ubuntu下安装opencv

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

注意这里的虚拟库少了一个,在安装好后,使用下面的指令

sudo add-apt-repository “deb [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toSH75G7-1633613388396)(file:///C:\Users\无\AppData\Roaming\Tencent\QQTempSys[5UQ[BL(6~BS2JV6W}N6[%S.png)]http://security.ubuntu.com/ubuntu xenial-security main”
sudo apt update
sudo apt install libjasper1 libjasper-dev

同时编译时的线程选择,要注意自身虚拟机的处理核个数,2个就别用4线程,容易死机

2练习图片的使用

创建文件夹,进入文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNHi6maw-1633613388399)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007195841987.png)]

创建文件

在这里插入图片描述

代码

#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("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((dxdx + dydy)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;

}

编译文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4f0zOmG8-1633613388402)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007200319333.png)]

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

运行文件

./test1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iKsL9Q0-1633613388403)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007200455500.png)]

练习视频的使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PiN7d5Nj-1633613388404)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007202412373.png)]

usb改为3.1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DJzo2HG-1633613388405)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007202517191.png)]

点击断开连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-68rIk20X-1633613388406)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007201913834.png)]

亮起灯就好了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VofFXg4c-1633613388407)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007202821982.png)]

创建一个文件touch test2.cpp

gedit test2.cpp
将一个视频导入test2.cpp一个文件夹中

代码

#include <opencv2/opencv.hpp>
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;
}

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

编译文件

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

输出结果。

./test2

在这里插入图片描述

创建test3.cpp

gedit test3.cpp

代码

/*********************************************************************
打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
*********************************************************************/
#include
#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;

}

编译

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

运行./test3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uj4Cl9RU-1633613388408)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211007205132751.png)]

3总结

在ubuntu下使用opencv,让我学习到了许多东西,就是太麻烦,但是亲自做坐这写东西确实让人印象深刻。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:48:21  更:2021-10-08 11:50:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:29:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码