美文网首页
使用OpenCV读取DroidCam的摄像头数据(局域网内)

使用OpenCV读取DroidCam的摄像头数据(局域网内)

作者: zqyadam | 来源:发表于2019-12-08 10:14 被阅读0次

DroidCam的安装文件

链接:https://pan.baidu.com/s/1cPH36EHM8su3wxxcu6mZLg

提取码:c8dj

只安装手机版就可以了

打开手机端DroidCam查看IP和端口

image.png

找到上图中的IP地址及Port端口号,填入到下面的代码中

OpenCV代码Demo

# 打开摄像头
import cv2
cap = cv2.VideoCapture('http://192.168.3.76:4747/mjpegfeed') # 这里是DroidCam手机端的IP地址和端口号
print("摄像头是否已经打开 ? {}".format(cap.isOpened()))
## 设置画面的尺寸
# 画面宽度设定为 1920
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
# 画面高度度设定为 1080
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)


cv2.namedWindow('image_win',flags=cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO | cv2.WINDOW_GUI_EXPANDED)

# 图像计数 从1开始
img_count = 1

# 定义编码方式并创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
outfile = cv2.VideoWriter('output.avi', fourcc, 25., (1920, 1080))

while(True):
    ## 逐帧获取画面
    # 如果画面读取成功 ret=True,frame是读取到的图片对象(numpy的ndarray格式)
    ret, frame = cap.read()

    if not ret:
        # 如果图片没有读取成功
        print("图像获取失败,请按照说明进行问题排查")
        ## 读取失败?问题排查
        # **驱动问题** 有的摄像头可能存在驱动问题,需要安装相关驱动,或者查看摄像头是否有UVC免驱协议
        # **接口兼容性问题** 或者USB2.0接口接了一个USB3.0的摄像头,也是不支持的。
        # **设备挂载问题** 摄像头没有被挂载,如果是虚拟机需要手动勾选设备
        # **硬件问题** 在就是检查一下USB线跟电脑USB接口
        break
    
    outfile.write(frame)
    cv2.imshow('image_win', frame)

    # 等待按键事件发生 等待1ms
    key = cv2.waitKey(1)
    if key == ord('q'):
        # 如果按键为q 代表quit 退出程序
        print("程序正常退出...Bye 不要想我哦")
        break
    elif key == ord('c'):
        ## 如果c键按下,则进行图片保存
        # 写入图片 并命名图片为 图片序号.png
        cv2.imwrite("{}.png".format(img_count), frame)
        print("截图,并保存为  {}.png".format(img_count))
        # 图片编号计数自增1
        img_count += 1


# 释放VideoCapture
cap.release()
# 销毁所有的窗口
cv2.destroyAllWindows()


相关文章

网友评论

      本文标题:使用OpenCV读取DroidCam的摄像头数据(局域网内)

      本文链接:https://www.haomeiwen.com/subject/pgxmgctx.html