图片&视频的加载和显示
1. 机器视觉介绍
现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西.
就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。
1.1 机器视觉的应用
-
物体识别: 人脸识别, 车辆检测
-
-
识别图像中的文字(OCR)
- 图像拼接, 修复, 背景替换
2. OpenCV介绍
-
Gray Bradsky于1999年开发, 2000年发布
-
C++, Python, Java, JS
-
跨平台(Windows, Linux, Mac…)
为什么选择python语言:
- python语言简单, 开发速度快
- 底层使用C/C++, 速度有保障
- 有完整的生态链
学习目标:
- 了解OpenCV的运行机制
- 可以使用OpenCV处理一些图像常见问题
- 学会物体识别, 文字识别等问题的处理思路
3. 安装OpenCV
进入虚拟环境, 执行pip install opencv-python==3.4.1.15
, 3.4.2之后有些算法申请了专利,用不了了.
安装opencv扩展包(选装): pip install opencv-contrib-python==3.4.1.15
如果装不了去:https://www.lfd.uci.edu/~gohlke/pythonlibs/下载相应的包手动安装.
pip install opencv-python3.4.1.15 opencv-contrib-python3.4.1.15 jupyter matplotlib -i https://pypi.douban.com/simple
4. 图像视频的加载和显示
4.1 创建和显示窗口
-
namedWindow() 创建命名窗口
-
imshow() 显示窗口
-
destroyAllwindws() 摧毁窗口
-
resizeWindow() 改变窗口大小
-
waitKey() 等待用户输入
import c2 # cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE) # WINDOW_NORMAL可以让窗口大小变得可以调节 cv2.namedWindow('new', cv2.WINDOW_NORMAL) # 修改窗口大小 cv2.resizeWindow('new', 1920, 1080) cv2.imshow('new', 0) # waitKey方法表示等待按键, 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭. # 会返回按键的ascii的值 key = cv2.waitKey(0) if key == ord('q'): cv2.destroyAllWindows()
4.2 加载显示图片
-
imread(path, flag): 使用imread可以读取图片, 默认读取的是彩色图片.比如:
# 导入opencv包 import cv2 import matplotlib.pyplot as plt import numpy as np # 读取图片 img = cv2.imread('./cat.jpeg')
-
原图长这样:
使用matplotlib显示
plt.imshow(img)
, 长这样:
发现这个猫的样子没变, 但是颜色不太对, 这是因为OpenCV读取的图片颜色通道是按照BGR(蓝绿红)排列的, 一般图片通道都是按照RGB来排列的.为了正常的显示猫的图片, 我们要用OpenCV的图像显示方法:
cv2.imshow('cat', img) cv2.waitKey(0) cv2.destroyAllWindows()
我们可以把显示图片的方法封装成一个函数方便我们显示图片:
def cv_show(name, img)
-