开发环境:rk3566
架构:arm-64
如上图所示,运行发现打开显示can't open camera by index,这个错误就是通过索引访问摄像头失败,
定位到代码里边,open函数传入的索引号错误
- cap.open(1, CAP_V4L);//0
- if (!cap.isOpened())
- {
- printf("open error\n");
- return -1;
- }
问题解决:
1.首先输入lsusb查看摄像头是否能正常识别
如上图所示,两个摄像头均可以识别到,如果rk3566无法识别摄像头,输入即可(root权限下):
echo host > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode
2.如果usb识别正常,那么输入以下命令,获取设备节点:
v4l2-ctl --list-devices
因为答主是两个摄像头,所以会显示出两个,这里看到我的RGB摄像头节点为video12和video13.这里我们选择第一个节点即可,把之前open函数传入的1改为12
- cap.open(12, CAP_V4L);//0
-
- if (!cap.isOpened())
- {
- printf("open error\n");
- return -1;
- }
编译运行后解决!