RK3399 Camera调用USB摄像头(一)测试篇

新买的开发板RK3399外接USB摄像头,查看了下,RK3399 Android系统rom是支持底层UVC驱动的,将一些测试结果和测试demo记录下来,以免他人踩坑,如果有帮到你,请点个关注和start,谢谢

一、USB摄像头连接信息打印

1. Camera启动USB摄像头
  • 当打开不存在相机时warn错误警告,监听该异常处理即可。几个错误问题:

    • 相机分辨率不支持问题,打开报错(系统相机默认打开的640*480),需要从HAL层进行修改
    • USB拔插地址问题,RK3399外接USB摄像头,默认时从/dev/video0地址,通过V4L2去打开。但是不确定时硬件USB接口问题还是驱动问题,导致偶尔拔插会出现Video1识别,导致打开失败的问题
  • 获取Camera支持的分辨率列表,当USB摄像头不在列表之内,系统相机打开崩溃,当然自己软件调用相机没有问题

      打开不存在相机时warn错误警告,监听该异常处理即可
      System.err: java.lang.RuntimeException: Fail to connect to camera service
      System.err:     at android.hardware.Camera.<init>(Camera.java:496)
      System.err:     at android.hardware.Camera.open(Camera.java:345)
      System.err:     at com.yue.customcamera.handler.Camera1Control.startCamera(Camera1Control.java:169)
      System.err:     at com.yue.customcamera.handler.Camera1Control.access$000(Camera1Control.java:39)
      System.err:     at com.yue.customcamera.handler.Camera1Control$1.run(Camera1Control.java:138)
      System.err:     at android.os.Handler.handleCallback(Handler.java:755)
      System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
      System.err:     at android.os.Looper.loop(Looper.java:154)
      System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
    
2. 罗技USB2.0摄像头测试
  • 插入:

      EventHub: No input device configuration file found for device 'UVC Camera (046d:0825)'.
      EventHub: Unable to disable kernel key repeat for /dev/input/event4: Function not implemented
      EventHub: New device: id=17, fd=280, path='/dev/input/event4', name='UVC Camera (046d:0825)', classes=0x80000401, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, wakeMechanism=EPOLLWAKEUP, usingClockIoctl=true
      InputReader: Device added: id=17, name='UVC Camera (046d:0825)', sources=0x00002103		
    
      Added device UsbDevice[mName=/dev/bus/usb/005/002,mVendorId=1133,mProductId=2085,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=null,mProductName=null,mVersion=2.0,mSerialNumber=87430990,mConfigurations=[
      UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=250,mInterfaces=[
      UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=14,mSubclass=1,mPro
### RK3588 USB摄像头驱动及配置教程 #### 1. 准备工作 为了确保USB摄像头能够在RK3588平台上正常工作,需要确认已安装适当版本的操作系统固件。最新版的3588固件(ITX-3588J_Ubuntu20.04-Gnome-r30028_v1.1.1b_230914)能够支持多种外设设备,包括高分辨率摄像头[^2]。 #### 2. 连接USB摄像头USB摄像头连接至RK3588开发板上的任意可用USB接口。通常情况下,Linux内核会自动加载相应的USB视频类(UVC)驱动程序并检测新硬件的存在。 #### 3. 检查设备识别状态 通过命令行工具验证系统是否成功识别了USB摄像头: ```bash lsusb ``` 此命令应列出所有已连接的USB设备及其制造商信息。如果切正常,则应该能看到代表所连USB摄像机的相关条目。 进步检查/dev目录下是否存在对应的视频节点文件: ```bash v4l2-ctl --list-devices ``` 上述指令不仅显示物理设备名称还提供其关联的字符设备路径,如`/dev/video0`等。 #### 4. 测试图像捕获功能 利用GStreamer或其他多媒体框架来测试实时预览效果以及录制短视频片段: ```bash gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink ``` 这段脚本启动了个简单的管道用于从指定源采集数据并通过默认渲染器播放出来;用户可根据实际需求调整参数设置以适应不同型号规格的产品特性差异。 对于更复杂的场景应用而言,可能还需要额外编译安装特定库函数或API接口以便更好地控制各项高级选项属性值范围内的调节操作。 #### 5. 调整摄像头参数 某些应用程序允许直接修改V4L2 API定义下的各类格式化描述符字段内容从而实现动态改变帧率大小、色彩空间转换模式等功能目的。下面给出段Python代码作为例子说明如何读取当前设定情况并向目标对象发送更新请求消息包体结构形式: ```python import cv2 cap = cv2.VideoCapture('/dev/video0') if not cap.isOpened(): print("Cannot open camera") exit() # 设置分辨率为640x480 ret = cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) ret = cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) while True: ret, frame = cap.read() if not ret: print("Can't receive frame (stream end?). Exiting ...") break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('frame', gray) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 该段代码展示了基本的OpenCV库调用方法,可用于获取来自选定输入流的数据样本,并对其进行初步处理后呈现于图形界面窗口之中供观察者查看分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值