许多的范例程序大多仅介绍该如何用 VideoCapture 撷取摄影机的画面,却没有充分说明其隐含的问题。
以下示范一个最基本的影像撷取程序。
# -*- coding: utf-8 -*-
import cv2
# ip camera 的撷取路径
URL = "rtsp://admin:admin@192.168.1.1/video.h264"
# 建立 VideoCapture 对象
ipcam = cv2.VideoCapture(URL)
# 使用无穷循环撷取影像,直到按下Esc键结束
while True:
# 使用 read 方法取回影像
stat, I = ipcam.read()
# 加上一些影像处理...
# imshow 和 waitkey 需搭配使用才能展示影像
cv2.imshow('Image', I)
if cv2.waitKey(1) == 27:
ipcam.release()
cv2.destroyAllWindows()
break
一般而言,都是这样写的。
先取回一帧影像,然后进行处理,膨胀闭合之类的,再使用CNN来辨识一下...等等。
全部都处理完了,再继续截取下一帧影像。
这种范例程序占了90%的google版面。
当然了,那个趴数是夏恩胡诌的,这边只是想表示 "很多" 的意思。
这种写法有什么问题呢?
其实只要稍微改动一下上述的程序,就可以看出来。