上一帖中完成了开发板的开箱及试用,本贴进行usb摄像头的测试及远程显示实时画面
1、开发板网络通信建立
开发板第一个网口通过网线连接PC,然后配置PC连接广域网的网卡的共享属性,关联至连接开发板的网卡

确定后,连接至开发板的网卡会自动配置为静态ip192.168.137.1。

通过Xshell的串口连接开发板,配置eth0网卡(对应第一个网口)为与PC网卡处于同一网段,我这里设置为192.168.137.111

通过Xshell的ssh连接开发板ip,默认账户root,无密码,即可登录设备。然后测试与baidu域名的解析和连接,到此开发板可正常访问网络,以便于在线配置开发环境

2、USB摄像头测试
连接USB摄像头,扫描usb设备及摄像头输入,确认摄像头是否能正常驱动

还可通过v4l2工具来调试摄像头,查看摄像头信息

下面行命令通过v4l2工具来捕获摄像头画面,保存为phpto.jpg文件

通过xftp软件通过sftp协议访问开发板文件系统,可以看到在shell路径下生成了phpto.jpg文件

传输到本地打开phpto.jpg文件,可以看到摄像头捕获的开发板照片,由于没有配置摄像头捕获参数,因此画面比较模糊

3、开发板网络通信建立
以上完成了摄像头的基本调试,由于开发板没有提供显示屏套件,因此采用 Flask + V4L2 逐帧推流的方案在PC端远程显示摄像头画面
安装依赖前需要校准系统时间,否则无法ssl证书认证

由于【FRDMDEVBOARDFORI.MX91】开发板预装了Python3环境,使用python开发效率更高。
安装flask和opencv-python依赖库

通过python实现逐帧推流
from flask import Flask, Response
import cv2
import subprocess
app = Flask(__name__)
# 调节亮度曝光
def set_camera_param():
subprocess.run(["v4l2-ctl","--set-ctrl=auto_exposure=1"])
subprocess.run(["v4l2-ctl","--set-ctrl=exposure_time_absolute=2500"])
subprocess.run(["v4l2-ctl","--set-ctrl=brightness=40"])
def gen_frames():
cap = cv2.VideoCapture("/dev/video0")
cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
while True:
ret, frame = cap.read()
if not ret:
continue
ret, buffer = cv2.imencode('.jpg', frame)
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + buffer.tobytes() + b'\r\n')
@app.route('/video')
def video_feed():
return Response(gen_frames(),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
#set_camera_param()
app.run(host='0.0.0.0', port=5000, debug=False)执行代码
在浏览器中访问 https://192.168.137.111:5000/video,即可查看摄像头实时页面,ip为前面设置的开发板ip

我要赚赏金
