当前位置:网站首页>OpenCV学习(一)---环境搭建
OpenCV学习(一)---环境搭建
2022-06-25 09:45:00 【胖哥王老师】
学习目的
偶尔看了一下招聘,好多企业对音视频有些许的要求,那就先入个门,整个opencv学习一下,刚买的树莓派的摄像头也到了,usb摄像头也到了,还有一个单片机的摄像头模块,都学一下,现在大环境不好,工人嘛,还是需要性价比高一些,才好找出路噻。
没说要离职啊,不要多想。
安装环境
我是在虚拟机下学习的,安装的是ubuntu22.04的版本。
系统下载地址
首先安装了ssh服务
sudo apt-get install openssh-server
安装这个不是主要为了用命令行软件,而是为了winscp拷贝东西方便一些。
安装前置依赖软件
sudo apt-get install cmake gcc g++ python3-dev python3-numpy libavcodec-dev libavformat-dev libswscale-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgtk-3-dev
安装一些图片依赖库:
sudo apt-get install libpng-dev libjpeg-dev libopenexr-dev libtiff-dev libwebp-dev
下载opencv源码
git clone https://gitclone.com/github.com/opencv/opencv
编译源码
cd opencv
mkdir build
cd bulid
cmake ../
大概需要2个小时,参考博客的博主用五个小时,看来我这个电脑还阔以啊
最后安装
sudo make install
然后回滚打印,查看一下cv2的安装位置
然后输出python3的环境看一下是否包含在内
python3 -c "import sys; print(sys.path)"
['', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/xxx/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
/usr/local/lib/python3.10/dist-packages包含在内,正好,不需要再添加了。
安装pip
pip主要是为了python安装模块使用
apt-get install python3-pip
安装matplotlib模块
python3 -m pip install -U matplotlib
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
程序测试
来一个测试程序,注意是在python3命令行中
import matplotlib
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('/home/sunjin/work/123.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
因为是灰度显示,所以皮搋子头变成了灰色
原图是这个
摄像头测试
首先要配置一下虚拟机中的USB配置,改为3.0。
然后USB设备与虚拟机相连,即断开与主机的连接。
#!/usr/bin/python3
#1.引入cv2
import cv2
#2.主函数
#if __name__ == '__main__':
#3.打开笔记本摄像头
cap = cv2.VideoCapture(0)
assert cap.isOpened(), 'Cannot capture source' #摄像头没有正常打开则报错
#4.摄像头能打开则获取图像帧,显示图像
while cap.isOpened():
#read()函数返回两个参数,第一个为参数为bool值,表示是否获取到图像,
#第二个参数为当前帧图像
ret, frame = cap.read()
# 将获取到的当前帧水品翻转
# 第二个参数: 1 表示水平翻转; 0 表示垂直翻转; 小于0 表示水平垂直翻转
frame = cv2.flip(frame,1)
cv2.imshow('mycreame',frame) #显示当前帧
if ( cv2.waitKey(30) == 27 ): #按下Esc键则退出 waitKey()方法表示等待键盘输入,单位为毫秒
break
#5.关闭所有窗口
cv2.destroyAllWindows()
部分截图,以免造成不适
万事俱备,只欠学习了
参考博客
B站章鱼萝卜猫《Ubuntu环境下编译安装OpenCV-Python》
结束语
今天海淀的疫情又提升了等级,全部企业员工居家办公,大家的生活压力又要变大了。总说不想上班,真要是不上班了,按照北京市最低标准的待遇,又该难受了。
所以,还是老话一句,学习,永远不会背叛你,我们领导说,如果公司让我明天不要来了,我随时都能找到下一个工作,真的假的不做评判,但是这份自信,还是我们都要学习一下的。自信源自什么?还得是能力,还等什么,学就完了。
边栏推荐
- Fluent creates, reads and writes JSON files
- Floating window --- create an activity floating window (can be dragged)
- Puzzle (019.2) hexagonal lock
- Kotlin keyword and operator
- Flask博客实战 - 实现侧边栏最新文章及搜索
- Tiktok brand goes to sea: both exposure and transformation are required. What are the skills of information flow advertising?
- ShardingSphere-Proxy 4.1 分庫分錶
- 字符串 实现 strStr()
- Set the location permission in the shutter to "always allow"
- Flask博客实战 - 实现侧边栏文章归档及标签
猜你喜欢
OpenCV学习(二)---树莓派上安装opencv
虚幻引擎图文笔记:使用VAT(Vertex Aniamtion Texture)制作破碎特效(Houdini,UE4/UE5)上 Houdini端
i++ 和 ++i的真正区别
The path of Architects
我希望按照我的思路盡可能將canvas基礎講明白
Flask blog practice - archiving and labeling of sidebar articles
How to develop wechat applet? How to open a wechat store
How to make a self-service order wechat applet? How to do the wechat order applet? visual editing
【论文阅读|深读】DRNE:Deep Recursive Network Embedding with Regular Equivalence
Rxjs TakeUntil 操作符的学习笔记
随机推荐
What is CRA
Free applet making tool, how to make wechat applet
The problem of automatic page refresh after the flyer WebView pops up the soft keyboard
链表 删除链表中的节点
Solutions using protobuf in TS projects
(forwarding articles) after skipping multiple pages, shuttle returns to the first page and passes parameters
Grabcut image segmentation in opencv
Redis(二)分布式锁与Redis集群搭建
Difference between malloc and calloc
Shardingsphere proxy 4.1 Sous - base de données sous - table
Mysql 源码阅读(二)登录连接调试
On binary tree
Can two Mitsubishi PLC adopt bcnettcp protocol to realize wireless communication of network interface?
Wearable devices may reveal personal privacy
Kotlin common standard functions
The path of Architects
Flutter replaces the default icon of Gaud positioning
字符串 实现 strStr()
Oracle query comes with JDK version
Kotlin advanced set