树莓派(5):CSI摄像头 vs USB摄像头

CSI摄像头 vs USB摄像头

  • 0. 前言
  • 1. 准备工作
  • 2. CSI摄像头
    • 2.1 安装摄像头
    • 2.2 安装驱动
    • 2.3 测试
  • 3. USB摄像头
  • 4. 二者对比
    • 4.1 型号说明
    • 4.2 成像质量
    • 4.3 系统资源占用
      • 4.3.1 CSI摄像头
      • 4.3.2 USB摄像头
      • 4.3.3 二者对比
    • 4.4 使用体验
      • 4.4.1 CSI摄像头
      • 4.4.2 USB摄像头
  • 5.其他

0. 前言

树莓派的CSI原装摄像头普通USB摄像头有何区别?
CSI摄像头有何优缺点?我们在选择时该选哪一种

最近做某个项目的加速时,产生了这样的疑问,于是开始比较一下这两种摄像头。

1. 准备工作

我是在python3环境下调用opencv对两款摄像头进行测评
所以需要以下准备:

  1. Enable Camera
    点击左上角树莓派 --> Preference --> Raspberry Configuration,使能Camera,之后重启树莓派。

  2. 安装opencv
    具体过程见树莓派(4):树莓派python3安装opencv

2. CSI摄像头

2.1 安装摄像头

树莓派(5):CSI摄像头 vs USB摄像头_第1张图片
安装CSI摄像头的时候,不可带电操作,否则容易烧坏摄像头,安装排线的时候,留意摄像头和树莓派上的卡扣,打开卡扣后再插入排线,排线插好后再把卡扣扣好,并注意排线的方向

2.2 安装驱动

在Deiki文章中写道,

树莓派专用CSI摄像头插到树莓派的CSI口上并在在raspi-config中打开后就可以使用Raspistill命令直接使用,但如果在OpenCV中调用CSI摄像头会出现无数据的现象(cv2.VideoCapture(0)这时不会报错)。

这是因为树莓派中的camera module是放在/boot/目录中以固件形式加载的,不是一个标准的V4L2的摄像头驱动,所以加载起来之后会找不到/dev/video0的设备节点。我们在/etc/modules里面添加一行bcm2835-v4l2(小写的L)就能解决问题。

我是没有遇到这个问题的,即,不进行这一步操作我的opencv也能直接调用CSI摄像头,可能是Buster版本解决了这个问题。

不过保险起见,我还是进行了这一步操作。

2.3 测试

写一个简单的读取摄像头图像的程序

import cv2

videoIn = cv2.VideoCaptire(0)
print("capture device is open: " + str(videoIn.isOpened()))
success,frame = videoIn.read()
while success:  
	cv2.imshow('Test camera',frame)
	success,frame = videoIn.read()
	if cv2.waitKey(1) & 0xFF == ord('q'):
		break
videoIn.release()

树莓派(5):CSI摄像头 vs USB摄像头_第2张图片
测试成功!

3. USB摄像头

USB摄像头则方便得多,直接插入USB口(此时我拆下了CSI摄像头),同样运行上面的代码
树莓派(5):CSI摄像头 vs USB摄像头_第3张图片
测试成功!

4. 二者对比

4.1 型号说明

CSI摄像头 USB摄像头
树莓派(5):CSI摄像头 vs USB摄像头_第4张图片 树莓派(5):CSI摄像头 vs USB摄像头_第5张图片

看订单的时候发现这款USB摄像头价格成了66了,不过现在一般的USB摄像头二十来块也能买一个吧

4.2 成像质量

CSI摄像头 USB摄像头
树莓派(5):CSI摄像头 vs USB摄像头_第6张图片 树莓派(5):CSI摄像头 vs USB摄像头_第7张图片

CSI摄像头最大的痛点!成像质量是真的差啊!(主要是光线不足)

CSI摄像头的介绍有一句是

Excellent resolution (higher than most USB webcams) and excellent daytime image quality.

看来它只有在光线比较好的情况下才能质量说得过去了。难怪motocoder在论坛里写

After several weeks of frustration with the Raspberry Pi Camera, I gave up on it and switched to a USB webcam. For those considering the camera board, I recommend you look into USB cameras as an alternative.

The primary reason that I switched was that the Raspberry Pi camera board has extremely bad low light issues. Trying to take a photo indoors, even with significant incandescent light, was resulting in black frames about 9 out of 10 times. 1 out of 10 times, it would produce a slightly underexposed photo instead, leading me to believe this might be a software bug rather than a hardware issue.

4.3 系统资源占用

测试3000帧图像,测试代码如下

import cv2
import time

videoIn = cv2.VideoCapture(0)
print("capture device is open: " + str(videoIn.isOpened()))
flag = 0
start = time.time()
success,frame = videoIn.read()
size = frame.shape
print(size)
while success:    
	#cv2.imshow('Test camera',frame)
	success,frame = videoIn.read()
	flag += 1
	if cv2.waitKey(1) & 0xFF == ord('q'):
		break
	if flag == 3000:
		end = time.time()
		print("3000 frames use time is (s)")
		print(end - start)
		break
videoIn.release()

4.3.1 CSI摄像头

运行这段代码使用了100秒,基本是30帧/s。使用htop命令查看占用资源情况,CPU占用率基本是在20%波动。
树莓派(5):CSI摄像头 vs USB摄像头_第8张图片

4.3.2 USB摄像头

USB摄像头运行了101秒(这个还算稳定,之前试过一个USB摄像头帧率极不稳定且帧率较低),CPU占用率则是在50%到80%波动。
树莓派(5):CSI摄像头 vs USB摄像头_第9张图片
USB摄像头通常是慢速、低帧率的,这一点是没有CSI那么好的。

4.3.3 二者对比

CSI摄像头 USB摄像头
CPU占用率在10%~20%波动 CPU占用率在50%~80%波动

二者的输入图像shape均为 (480,640,3)

可以看到,USB摄像头的CPU占用率是比较高的。RPi是没有足够的CPU能力更高的帧速率、分辨率或高级视频压缩的

而CSI摄像头使用树莓派的GPU的话,h.264编码视频对CPU使用率影响很小

4.4 使用体验

使用体验上,USB摄像头就基本上完虐CSI摄像头了

4.4.1 CSI摄像头

  1. 易碎,易静电击穿
  2. 需要特定的软排线,短,易折,不灵活
  3. 接口特定,不通用

对于电路板裸露在外这一点真的是需要格外小心!我就一不小心将电路板背面碰到了树莓派的以太网接口(是金属的),树莓派立刻down掉了,屏幕立刻黑掉,心痛地重启后所幸无碍,说明还是有电源保护的麽

不过,之后我就遇到了下面这个问题
VIDIOC_DQBUF: Resource temporarily unavailable

出这个问题的时候用的是另一个USB摄像头,换了本文的USB摄像头就不会出现这个问题。

出问题的摄像头在电脑上是能正常使用的,怀疑是异常掉电时它在树莓派该设备管理的缓存里面出了问题,先记录下来,之后尝试解决一下

4.4.2 USB摄像头

  1. 大多数头部都有某种类型的球头式安装,可以根据需要方便的调节摄像头的角度;
  2. 有比较长、比较灵活的USB线
  3. 即插即用,USB接口非常通用

5.其他

总结:双方各有优缺点吧,具体还是看你的需求选择一款。

目前,于我而言,USB摄像头占用这么多CPU资源实在是不能忍,我应该是要给CSI摄像头做个好的包装了:)

附官方论坛的讨论
树莓派(5):CSI摄像头 vs USB摄像头_第10张图片
有问题多交流,可留言可发邮件,我的邮箱是zhaodongyu艾特pku(这里换成点)edu.cn。

你可能感兴趣的:(树莓派)