Python cv2 读取rtsp视频流/USB摄像头并显示

安装python 库:
sudo apt install python-opencv

#!/bin/python
#### in rtsp server:
####  ffserver -f /etc/ffserver.conf &
#### ffmpeg -f v4l2 -i /dev/video0  -s 640x480 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm
import cv2

if __name__ == "__main__":
  cap = cv2.VideoCapture("rtsp://192.168.xx.xxx:8554/live1.h264")
  if cap.isOpened() :
    ret,frame=cap.read()
#    print "==== ret ===="
#    print ret
#    print "====print dir(frame)===="
#    print dir(frame)
#    print "====print frame.shape===="
#    print frame.shape
#    print "====print (frame.shape[0], frame.shape[1], frame.shape[2])===="
#    print (frame.shape[0], frame.shape[1], frame.shape[2])
#    print "====print frame.size===="
#    print frame.size
#    print "====print frame.data===="
#    #print frame.data
#    #print type(frame.data)
#    print "====print frame.copy===="
#    print frame.copy
#    print type(frame.copy)
#    print "====print frame.ctypes===="      
    #-------------------------------------------------------------------------------------------
    # !! frame.ctypes.data_as(c_char_p/c_void_p/...) 可以将python opencv读取到的图像转为
    #  C语言某种格式,在python传递参数给C语言的库时很有用。
    #  frame.ctypes.data_as(c_char_p):将一帧图像的内存地址转换为C语言char*型
    #-------------------------------------------------------------------------------------------
    print frame.ctypes
    print type(frame.ctypes)       
    print "====print frame.imag===="
    #print frame.imag
    #print type(frame.imag)
    print "====print frame.tobytes===="
    print frame.tobytes
    print type(frame.tobytes)
  
  ##cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,640)
  ##cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,480)
  while cap.isOpened():
    ret,frame=cap.read()
    print (frame.shape[0], frame.shape[1], frame.shape[2])
#    print ret
#    print dir(frame)
#    print frame.shape
#    print frame.size
#    print frame.data
    cv2.imshow("frame",frame)
    cv2.waitKey(10)

以上代码中注释部分大多为读取视频信息包括帧率,每帧图像大小,内容等信息的测试,下面为简单案例,
分别为读取USB摄像头数据和rtsp流数据,并显示:

import cv2 
if __name__ == "__main__":
  ## 读取rtsp视频流并显示
  cap = cv2.VideoCapture("rtsp://192.168.xx.xxx:8554/live1.h264")
  ## 读取usb-came 0(/dev/video0) 
  #cap = cv2.VideoCapture(0)
  while cap.isOpened():
    (ret,frame)=cap.read()
    print (frame.shape[0], frame.shape[1], frame.shape[2])
    cv2.imshow("frame",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
      break
  cv2.destroyWindow("frame")
  cap.release()
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值