opencv3.3.0在线读取网络图片图像资源
照例打开opencv3.3.0-python3.6官方文档:
https://docs.opencv.org/master/d8/dfe/classcv_1_1VideoCapture.html
详解
官方文档给出4种用法:
- VideoCapture(‘c://video.avi’):直接读入本地的一个视频文件,不解释。
- VideoCapture (”c://”+’img_%02d.jpg’):读入本地的图片序列,结果如:img_00.jpg, img_01.jpg, img_02.jpg, …
- VideoCapture(url):读入在线网络资料,这个可以发挥的余地就太大了,详情请看后面的实例。
- VideoCapture(int index):打开一个设备,通常0就是笔记本自带的摄像头,1就是笔记本扩展的USB-QQ直播用摄像头。
特别说明:VideoCapture()可以带参数int apiPreference,apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW.
关于参数的描述和特征参见:
https://docs.opencv.org/master/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d
VideoCapture的其它函数方法包括open、get、set、grab 、release 、retrieve、isOpened()等,不再讨论,自行学习文档即可。
特别说明:在get得到视频的帧频时,官方文档和网络上大多数的参数都是cap.get(cv2.CV_CAP_PROP_FPS),但在opencv3.3.0中编译不过,应为cap.get(cv2.CV_PROP_FPS)。
估计许多人会下坑。
实例
从本地读取文件不再描述,本博客仅展示从网络读入资源文件的练习。
1 读入一个网络图片:
打开百度,点击图片,输入名称,右键点选一张获取网络地址,填写在url中:
import cv2
cv2.namedWindow('photo',0) #0窗口大小可以任意拖动,1自适应
cv2.resizeWindow('photo',640,480)
url='http://i5.qhimg.com/t019c3e49c9c9319c33.jpg'
cap=cv2.VideoCapture(url)
ret=cap.isOpened()
while (ret):
ret,img=cap.read()
if not ret:break
cv2.imshow('photo', img)
cv2.waitKey(0)
cap.release()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
2 打开网络视频资源
网络视频资源包括直播推流rtmp、rtsp、mms等以及Ip摄像头的资源,需要自己到网络上去寻找。
正是这些网络资源的获取,让opencv给我们进行学习和图片处理带来了极大的便利,必须赞一个!
打开HKS电视台的直播地址:
import cv2
cv2.namedWindow('photo',0) #0窗口大小可以任意拖动,1自适应
cv2.resizeWindow('photo',640,480)
url="rtmp://live.hkstv.hk.lxdns.com/live/hks"
cap=cv2.VideoCapture(url)
ret=cap.isOpened()
while (ret):
ret,img=cap.read()
if not ret:break
cv2.imshow('photo', img)
if cv2.waitKey(25)==ord(' '):break
cap.release()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
打开中央6套高清频道
打开我家客厅萤石C2c网络摄像头的推流视频
我的华为手机变身ipwebcam,直接读取手机移动视频
看出来屏幕里面的嵌套了吗?
是不是打开了一扇便利之窗!