Jeston Nano无法启动CSI相机

Jeston Nano无法启动CSI相机

在学习了一段时间的目标检测算法之后,想将其部署到设备上,以测试其实际性能。所以入手了一款NVDIA的Jetson Nano人工智能开发板套件,由于第一次使用,所以想跟着官网的教程走一遍,熟悉这个设备。结果在配置无外设模式的时候,就遇到了无法启动CSI相机的问题,以下记录一些探索过程。

运行的代码是hello_camera/csi_camera.ipynb

csi_camera

报错位置:第二个代码块
报错内容

#前面还有一堆报错,有错误提示是无法创建相机对象
could not initialize camera

1、第一个尝试:
在终端试了一下,直接用python交互式编程来执行这两行代码,结果直接显示No module named jetson。自然想到去装这个包,然后经过一番操作,发现这个包只支持python3.x,而Ubuntu系统默认的python版本是python2。但是我感觉这个系统应该有预装python3,所以查看了一下,确实有。然后通过一番操作将系统默认python版本修改为python3。然后在终端执行

from jetcam.csi_camera import CSICamera
camera = CSICamera(width=224, height=224, capture_device=0) # confirm the capture_device number

心想这下不报错了,应该好了吧,然后打开jupyter notebook运行这段代码。可爱的是。报错依旧,一个字都没变。
不应该啊为什么呢?
然后我猛地意识到,不会这个在docker运行的python版本还是python2吧。于是打开终端,开始验证:

./docker_dli_run.sh
python --version

验证结果:
先运行docker容器,再查看python版本
还真是python版本的问题,为了进一步验证,进入python2,尝试引用jetcam
No module named jetcam.csi_camera
结果真是,没法引用。
这里存在一个矛盾:似乎docker默认运行python2,而jetcam只提供了python3版本。要崩溃了。

但是啊但是,再留意一下右上角:
Jupyter用的是python3
Jupyter用的是python3!!!
所以洗洗睡吧,遇上了没法解决的问题:python3明明可以引用jetcam的,为什么在jupyter lab中不可以!

第二天早上洗洗起床,试图再挣扎一下,但是突然发现无法通过ssh访问Jetson Nano了,所以重启了一下…

重启之后,用ssh访问jetson运行docker,然后打开jupyter lab,想再查看一下报错的内容,总结一下然后再找解决办法。结果啊结果,在我运行到第二个代码块的时候,它没有立马报错,就在这三秒钟之内,我幻想,它不会好了吧?三秒钟之后,它没有报错,接下来的代码也没有报错,啊啊啊,内心瞬间舒爽。问题似乎解决了

我回想了一下,当时为了能一直远程访问Jetson Nano,我就给它设置了永不睡眠/锁定的状态,而且自此之后,我进行的所有操作之后,都没有重启过它。所以,有可能是我中间的某一步操作解决了问题,但是因为没有重启导致没有生效。以下是我认为有可能解决问题的步骤:(如果你也遇上同样的问题,可以在执行完每一步就重启一次)

  • 1、对于CSI相机,在定义docker启动脚本docker_dli_run.sh的时候,需要在终端如下设置:
echo "sudo docker run --runtime nvidia -it --rm --network host \
    --volume ~/nvdli-data:/nvdli-nano/data \
    --volume /tmp/argus_socket:/tmp/argus_socket \
    --device /dev/video0 \
    nvcr.io/nvidia/dli/dli-nano-ai:v2.0.1-r32.5.0" > docker_dli_run.sh

特别注意第三行后的反斜杠,官网没有这一个反斜杠

  • 2、在python3环境下安装jetcam和traitlets
  • 3、更改系统的默认python版本为python3

以上方法我暂时不重新做验证了,希望后来的小伙伴如果用上述方法能解决问题,请在评论区留言反馈一下。

以下是在探索过程中所主要参考的一些文章,衷心感谢!
[1] https://github.com/NVIDIA-AI-IOT/jetcam/issues/12
[2] https://github.com/NVIDIA-AI-IOT/jetcam
[3] https://pypi.org/project/traitlets/#history
[4] https://blog.csdn.net/weixin_44786482/article/details/101097122

Jeston Nano 是一款功能强大的嵌入式开发板,可以用于传输图片。对于传输图片,我们可以有以下几种方式: 1. 使用网络传输:Jeston Nano具备网络功能,可以通过无线网络或有线网络连接到其他设备。我们可以利用这个功能,在Jeston Nano和其他设备之间传输图片。例如,可以通过使用SFTP(SSH文件传输协议)来传输图片,或者使用网络共享来实现图片的传输。只需将图片文件从一台设备(例如PC)上传到Jeston Nano的特定文件夹,然后在另一台设备上下载即可。 2. 使用USB传输:Jeston Nano拥有多个USB接口,可以连接到其他设备。如果我们有图片存储在一个USB设备(例如移动硬盘)上,我们可以将其连接到Jeston Nano的USB端口,并使用文件管理器将图片从USB设备复制到Jeston Nano上。 3. 使用SD卡传输:Jeston Nano支持microSD卡扩展,我们可以将图片存储在一个microSD卡上,然后将该卡插入到Jeston Nano的卡槽中。这样,我们可以使用Jeston Nano上的文件管理器来访问和复制图片。 4. 使用外部相机传输:Jeston Nano可以连接到摄像头模块,我们可以使用摄像头模块来捕捉图片,并将其传输到Jeston Nano。连接相机模块后,我们可以使用OpenCV等软件库来处理和传输图片。 无论我们选择哪种方式,都需要确保在传输过程中保持图片的质量和完整性。另外,我们还可以使用图像处理技术,如压缩算法,以减小图片的文件大小,从而更有效地进行传输。这样,使用Jeston Nano可以轻松地传输图片并满足各种需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值