摄像头拍照 stat: No such file or directory解决和opencv物品识别的尝试(树莓派opencv第四天记录

1.问题解决部分

拍摄一张照片反馈no such file or directory找不到摄像头

vita@raspberrypi:~ $ fswebcam /dev/video0 --no-banner -r 640x480 ~/image02.jpg
--- Opening /dev/video0...
stat: No such file or directory

检查usb摄像头设备连接情况

vita@raspberrypi:~ $ ls -l /dev/video*
crw-rw----+ 1 root video 81,  1 Apr  2 23:27 /dev/video1
crw-rw----+ 1 root video 81, 10 Apr  2 22:10 /dev/video10
crw-rw----+ 1 root video 81, 11 Apr  2 22:10 /dev/video11
crw-rw----+ 1 root video 81, 12 Apr  2 22:10 /dev/video12
crw-rw----+ 1 root video 81,  2 Apr  2 22:10 /dev/video13
crw-rw----+ 1 root video 81,  3 Apr  2 22:10 /dev/video14
crw-rw----+ 1 root video 81,  4 Apr  2 22:10 /dev/video15
crw-rw----+ 1 root video 81,  5 Apr  2 22:10 /dev/video16
crw-rw----+ 1 root video 81, 13 Apr  2 22:10 /dev/video18
crw-rw----+ 1 root video 81, 15 Apr  2 23:27 /dev/video2
crw-rw----+ 1 root video 81,  6 Apr  2 22:10 /dev/video20
crw-rw----+ 1 root video 81,  7 Apr  2 22:10 /dev/video21
crw-rw----+ 1 root video 81,  8 Apr  2 22:10 /dev/video22
crw-rw----+ 1 root video 81,  9 Apr  2 22:10 /dev/video23
crw-rw----+ 1 root video 81, 14 Apr  2 22:10 /dev/video31
vita@raspberrypi:~ $ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/video18
        /dev/video31
        /dev/media3

bcm2835-isp (platform:bcm2835-isp):
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16
        /dev/video20
        /dev/video21
        /dev/video22
        /dev/video23
        /dev/media1
        /dev/media2

icspring camera: icspring camer (usb-3f980000.usb-1.2):
        /dev/video1
        /dev/video2
        /dev/media0

Cannot open device /dev/video0, exiting.
ls /dev/video*
/dev/video1   /dev/video12  /dev/video15  /dev/video2   /dev/video22
/dev/video10  /dev/video13  /dev/video16  /dev/video20  /dev/video23
/dev/video11  /dev/video14  /dev/video18  /dev/video21  /dev/video31

这几种应该都可以,不知道为什么笔者只连了一个摄像头,但出来了一堆设备编号,只是没有/dev/video0

vita@raspberrypi:~ $ fswebcam /dev/video1 --no-banner -r 640x480 ~/image010.jpg
--- Opening /dev/video0...
stat: No such file or directory

即使改成有的 /dev/video1它依旧打开/dev/video0

错误原因:某些版本的fswebcam 默认检查 /dev/video0,但摄像头是 /dev/video1

解决方案:使用 -d /dev/video1 强制指定设备

$ fswebcam -d /dev/video1 --no-banner -r 640x480 ~/image010.jpg

反馈成功

--- Opening /dev/video1...
Trying source module v4l2...
/dev/video1 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/home/vita/image010.jpg'.

2.个人记录部分

今天目标是希望能通过inrange识别分离特定颜色的物体(准确来说是矩形),因为笔者发现自适应阈值不好用

参考文章

python-opencv中的cv2.inRange函数-优快云博客

只不过笔者还是用的RGB空间,也许改天可以试试HSV

笔者实验物品是一张便签,先拍了个照获得像素信息(过程中遇到了1.的问题

用alt+A可以看到像素分析

笔者根据希望分离区域的最大值和最小值设定了lower_red和upper_red

但是分离失败了,分离受光线影响过大,光线稍有变化就不行,明天再战

最后笔者还是用的最基本的二值化方法分离验证代码可行性

cv2.threshold(src, thresh, maxval, type)

用最基本的type: cv2.THRESH_BINARY

设定阈值是100(其实是在后面放了个黑色底板否则也有点难分离

浅记录一下中间遇到的各种问题

(1)OpenCV报-210:Unsupported format or combination of formats

问题解决:OpenCV报-210:Unsupported format or combination of formats_error: (-210:unsupported format or combination of -优快云博客

文章说是图片格式问题然而笔者似乎不是改成uint8的问题而是二值化阈值的时候用的不是gray而是三通道图像

(2)mat is not a numerical tuple

TypeError: Expected Ptr<cv::UMat> for argument ‘mat‘_expected ptr<cv::umat> for argument 'mat-优快云博客

其实没太搞懂,树莓派上的opencv总是报关于函数参数的错,不管是()里还是返回值

这个是返回值的问题,前面加ret,有些情况下可以解决

似乎网上对于这类问题有很多不同解决方式,见到过如下好几种

_,binary

ret,binary

_,binary,_

个人理解是增加接收值的变量数量(?未查证

总之换来换去有概率解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值