徐高翔的个人网站

OpenCV自学笔记之简介及基本图片视频处理

2018-11-04

软硬件环境

  • macOS High Sierra
  • opencv 3.3.1
  • anaconda3 & python 3.6.4

OpenCV简介

OpenCV(Open Source Computer Vision Library)是开源的计算机视觉和机器学习库,提供了C/C++、Python等接口,并支持Windows、Linux、Mac及Android等平台。

OpenCV的安装

使用anaconda来安装,anaconda的基本使用可以参考我的另一篇博文http://xugaoxiang.com/post/115

1
conda install opencv

图片显示及保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import cv2

image = cv2.imread('test.jpg', cv2.IMREAD_ANYCOLOR)

# 开窗口显示
cv2.imshow('show image', image)

# 保存成文件
cv2.imwrite('copy.jpg', image)

# 接收键盘输入,相当于是一个loop循环
cv2.waitKey(0)

# 删除创建的所有窗口,删除特定窗口cv2.destroyWindow(winname=**)
cv2.destroyAllWindows()

读取摄像头数据并实时显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2

cap = cv2.VideoCapture(0)

while True:
ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('frame', gray)

# 接收到q键,退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

IP Camera的RTSP视频播放

读取IP摄像头的数据跟读取本地摄像头类似

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2

cap = cv2.VideoCapture("rtsp://admin:123456@192.168.1.100:554/Streaming/Channels/101?transportmode=unicast")

while True:
ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('frame', gray)

# 接收到q键,退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

视频的存储

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import cv2

if __name__ == '__main__':

cap = cv2.VideoCapture(0)

# 设置编码类型XVID, 如果有其它的解码器,可以设置,如'X264'、'DIVX'等,各个平台支持的也不尽相同,此处以windows为例
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('test.avi', fourcc, 20.0, (640, 480))

while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
frame = cv2.flip(frame, 0)

out.write(frame)

cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

else:
break

cap.release()
out.release()
cv2.destroyAllWindows()

参考资料

推荐文章(由hexo文章推荐插件驱动)

使用支付宝打赏
使用微信打赏

请博主喝咖啡!