IVCam:电脑调用你的手机摄像头

前言

(这是之前玩的,现在才整理一下)

很多做图像处理的或者是经常需要开视频的朋友可能经常需要外接摄像头,因为摄像头是外设嘛,可能很多时候不方便随身携带;这时候我们可能会问?手机不是有摄像头吗?而且还是很多个(因为手机上的摄像头是定焦的,所以为了满足多种拍摄场景,设计时多采用多个不同焦距的摄像头来解决这个问题),我们可不可以直接用手机的摄像头获取图像?答案是肯定的,这边文章会告诉您如何通过IVCam调用手机摄像头,并附上测试结果。

配置过程

首先我们抛开上面这个软件,说一下连接方式,电脑想调用手机摄像头肯定要通信(不同通信方式通信速度有区别),通信方式无非分两种:有线和无线,其中无线的方式常见的有蓝牙和WIFI;

IVCam

IVCam简介:IVCam是E2ESOFT公司针对这个需求场景专门开发的一套软件工具,功能很多;很可惜的是,软件是商用的,但是我们仍然可以使用其中部分免费功能;

IVCam目前支持苹果、安卓手机/平板多种设备;

首先简单聊一下IVCam软件原理,其并不是直接对手机开发,而是通过软件调用的方式,在手机端通过app获取摄像头图像信息(声音),通过通信的方式,将信息传输给PC端的软件,软件本身会虚拟出摄像头设备,将图像呈现。

安卓端/IOS、PC端软件下载地址:https://www.e2esoft.cn/ivcam/

测试

WIFI连接

p.s.测试中,电脑连手机WIFI无法实现下述功能

IVCam软件测试

手机端:手机端的效果是原画质的。

在这里插入图片描述

电脑IVCam软件端:因为我使用的软件试用期已过,所以分辨率只有640*480 30FPS

在这里插入图片描述

腾讯会议测试:选择IVCam设备,测试正常

在这里插入图片描述

Pycharm-opencv测试:这里我注意这个videocapture摄像头的值是动态分配的,我之前测试的是3,刚才测试的是0;

在这里插入图片描述

使用代码如下:

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)#我这里IVCam摄像头是0
if not cap.isOpened():
    print("Cannot open camera")
    exit()
while True:
    # Capture frame-by-frame
    ret, frame = cap.read()
    # if frame is read correctly ret is True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    # Our operations on the frame come here
    # Display the resulting frame
    cv.imshow('frame', frame)
    if cv.waitKey(1) == ord('q'):
        break
# When everything done, release the capture
cap.release()
cv.destroyAllWindows()

USB连接

USB配置参考官方教程:https://www.e2esoft.cn/ivcam-connect-via-usb/

IVCam软件测试

手机端:

在这里插入图片描述

电脑端:

在这里插入图片描述

腾讯会议测试

在这里插入图片描述

Pycharm-opencv测试

在这里插入图片描述

总结

效果上:从上面测试结果上来看,利用IVCam将手机虚拟成摄像头调用是完全跑的通的,其能够实现和电脑内置摄像头/外接摄像头一样功能

很可惜的是:

  • 软件是商用的,免费使用只能在640*480 30FPS下;
  • 因为其并不是直接调用摄像头,所以会经常出现网络延时,WIFI下网络延时较大(这个和WIFI信号以及带宽等因素有关),并且其传输速度也会影响帧率;USB下延时较小,而且相较于WIFI的方法,更加稳定

我个人还是在找能否直接接入手机配置,想从这个角度解决:

  • 信息传输问题

  • 手机有很多摄像头,分开调用很多摄像头

参考资料

1、E2ESOFT中文官网:https://www.e2esoft.cn/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐