JetsonNano学习(四)OPENCV开启CSI摄像头

这篇具有很好参考价值的文章主要介绍了JetsonNano学习(四)OPENCV开启CSI摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

网上非常多的代码打不开CSI摄像头,但是使用Python2可以解决,根本原因在于OpenCV版本,Python2库中的CV2版本高于Python3导致,通过更新Python3库中的OpenCV即可解决该问题。

断电安装CSI摄像头,注意排线线缆的方向和正反,安装完成后上电开机。
opencv调用csi摄像头,JetsonNano,计算机视觉,目标检测,深度学习,opencv
如果是USB摄像头,安装有手就行。

一、检测摄像头是否安装好

JetsonNano终端输入:

ls -l /dev/video*

opencv调用csi摄像头,JetsonNano,计算机视觉,目标检测,深度学习,opencv
查看是否查询到: /dev/video [number]

二、安装jetcam库

代码如下(示例):

git clone https://github.com/NVIDIA-AI-IOT/jetcam
cd jetcam
sudo python3 setup.py install

三、示例程序

CSI摄像头_OpenCV(使用python2 编译)

import cv2

# 设置gstreamer管道参数
def gstreamer_pipeline(
    capture_width=1280, #摄像头预捕获的图像宽度
    capture_height=720, #摄像头预捕获的图像高度
    display_width=1280, #窗口显示的图像宽度
    display_height=720, #窗口显示的图像高度
    framerate=60,       #捕获帧率
    flip_method=0,      #是否旋转图像
):
    return (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM), "
        "width=(int)%d, height=(int)%d, "
        "format=(string)NV12, framerate=(fraction)%d/1 ! "
        "nvvidconv flip-method=%d ! "
        "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! "
        "videoconvert ! "
        "video/x-raw, format=(string)BGR ! appsink"
        % (
            capture_width,
            capture_height,
            framerate,
            flip_method,
            display_width,
            display_height,
        )
    )
 
if __name__ == "__main__":
    capture_width = 1280
    capture_height = 720
    display_width = 1280
    display_height = 720
    framerate = 60
    flip_method = 0
 
    # 创建管道
    print(gstreamer_pipeline(capture_width,capture_height,display_width,display_height,framerate,flip_method))
 
    #管道与视频流绑定
    cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=0), cv2.CAP_GSTREAMER)
 
    if cap.isOpened():
        window_handle = cv2.namedWindow("CSI Camera", cv2.WINDOW_AUTOSIZE)
        
        # 逐帧显示
        while cv2.getWindowProperty("CSI Camera", 0) >= 0:
            ret_val, img = cap.read()
            cv2.imshow("CSI Camera", img)
 
            keyCode = cv2.waitKey(30) & 0xFF         
            if keyCode == 27:# ESC键退出
                break
 
        cap.release()
        cv2.destroyAllWindows()
    else:
        print("打开摄像头失败")

CSI摄像头_Jetcam (使用python2 编译)

from jetcam.csi_camera import CSICamera
camera = CSICamera(width=640, height=480)
image = camera.read()
import ipywidgets
from IPython.display import display
from jetcam.utils import bgr8_to_jpeg
image_widget = ipywidgets.Image(format='jpeg')
image_widget.value = bgr8_to_jpeg(image)
display(image_widget)
camera.running = True
def update_image(change):
    image = change['new']
    image_widget.value = bgr8_to_jpeg(image)    
camera.observe(update_image, names='value')
# 断开摄像头连接
camera.unobserve(update_image, names='value')

USB摄像头_OpenCV(使用python3 编译)

import cv2
 
if __name__ == "__main__":
 
    cap = cv2.VideoCapture(3)
 
    if cap.isOpened():
        window_handle = cv2.namedWindow("D435", cv2.WINDOW_AUTOSIZE)
        
        # 逐帧显示
        while cv2.getWindowProperty("D435", 0) >= 0:
            ret_val, img = cap.read()
            cv2.imshow("D435", img)
 
            keyCode = cv2.waitKey(30) & 0xFF         
            if keyCode == 27:# ESC键退出
                break
 
        cap.release()
        cv2.destroyAllWindows()
    else:
        print("打开摄像头失败")

常见问题

调用jetcam库显示RuntimeError: Could not read image from camera

修改usb_camera.py 和 csi_camera.py 20行:

#self.cap = cv2.VideoCapture(self._gst_str(), cv2.CAP_GSTREAMER)
self.cap = cv2.VideoCapture(self.capture_device)

然后重新安装jetcam

摄像头采集数据在jupyter notebook中显示错误

opencv调用csi摄像头,JetsonNano,计算机视觉,目标检测,深度学习,opencv

pip3 install ipywidgets
jupyter nbextension enable --py widgetsnbextension
jupyter labextension install @jupyter-widgets/jupyterlab-manager

参照JetsonNano学习(二)

程序编译出现绿屏

终端直接输入命令:

nvgstcapture-1.0

成功调用摄像头
但是程序编译出现绿屏

opencv调用csi摄像头,JetsonNano,计算机视觉,目标检测,深度学习,opencv

大概率未使用Python2编译文章来源地址https://www.toymoban.com/news/detail-610922.html

到了这里,关于JetsonNano学习(四)OPENCV开启CSI摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jetson使用opencv和gstreamer调用csi摄像头报错:[ WARN:0] | GStreamer warning: Cannot query video position:

    出现类似的warning基本都是一个问题 VideoCapture加个参数就好了

    2024年02月12日
    浏览(47)
  • 树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

    手头有一个树莓派3B+ 和一块CSI摄像头,想要实现一个推拉流直播的效果。 所需材料: 开发板(我用的是树莓派3B+)、CIS摄像头、云服务器(用来搭建SRS服务器) 使用树莓派+CSI摄像头来做画面采集,然后使用FFmpeg推流到SRS云服务器上,然后用户可以拉取SRS服务器上的视频流

    2024年01月22日
    浏览(52)
  • 树莓派ubuntu:CSI接口摄像头安装驱动程序及测试

    树莓派中使用OV系列摄像头,网上能搜到的文章资源太老了,文章中提到的摄像头配置选项在raspi-config中并不存在。本文重新测试整理树莓派摄像头的驱动安装、配置、测试流程说明。 libcamera 新版本中使用libcamera作为摄像头驱动程序。 libcamera是一个开源的相机支持库,提供

    2024年01月23日
    浏览(75)
  • 【树莓派4B或CM4】ubuntu 18.04 CSI摄像头

    按照下面的图片里面的动画将CSI摄像头插入树莓派, 插入的时候要将树莓派的电给断掉 ,然后再上电,安装的时候注意触电的位置面向hdmi接口。 因为树莓派安装的是Ubuntu 18.04 LTS而不是树莓派的系统,所以需要安装raspi-config来对摄像头进行配置。具体步骤如下: 正常会出现

    2023年04月19日
    浏览(54)
  • Opencv(C++)系列学习---读取视频文件和打开摄像头

    今天学习的这两个内容比较简单,话不多说,直接上代码! 目录 【1】读取视频文件 【2】摄像头读取视频 运行结果:  这段代码较为简单,有兴趣的同学也可以挑战一下,在视频读取上加个进度条,可以通过鼠标拖动进度条到指定位置,像平时我们用的视频播放器一样,主

    2024年02月16日
    浏览(52)
  • 树莓派学习:学习opencv+用opencv获取树莓派mjpg摄像头视频流

    目录 前提步骤 打开树莓派摄像头 查看是否有图像,登录游览器打开树莓派IP地址的8080端口 获取mjpg的视频流url 代码 先设定好mjpg的视频流的url 利用opencv库中的v2.VideoCapture类读取mjpg视频流   cv2.VideoCapture() 检查摄像头是否成功打开,如果没有,则打印错误消息并退出程序 

    2024年02月03日
    浏览(60)
  • 【深度学习】python使用opencv调用摄像头拍摄并保存图片

    打开pycharm,新建一个camerm.py文件,把下面代码复制粘贴进去就可以了。 需要安装两个库:pip install opencv-python;pip install numpy

    2024年02月11日
    浏览(42)
  • SLAM系统--开启摄像头连接

    博客地址:https://www.cnblogs.com/zylyehuo/ 基于ORB-SLAM3库搭建SLAM系统 详见之前的博客 基于ORB-SLAM3库搭建SLAM系统 - zylyehuo - 博客园 (cnblogs.com) 参考链接 ORB-SLAM3 v1.0 编译问题解决 /usr/bin/env: \\\"pythonr\\\": 没有那个文件或目录 打开终端输入指令: vim ~/.bashrc 打开用户根目录下的.bashrc文件

    2024年02月06日
    浏览(44)
  • 前端如何利用js开启摄像头和关闭摄像头以及他的指示灯

    其实本文章主要想要讲解的就是如何关闭摄像头以及他的指示灯,因为这个事真的很让我苦恼,而开启摄像头其实并没有那么难,只需调用navigator.mediaDevices.getUserMedia方法就行,具体就不细讲了,直接上代码(HTML结构就是一个video标签和两个button按钮,所以就只上js部分了) 开启

    2024年02月13日
    浏览(47)
  • 【Jetson目标检测SSD-MobileNet应用实例】(四)在Jetson上使用CSI摄像头进行视频推理并输出检测结果

    【Jetson目标检测SSD-MobileNet应用实例】(一)win11中配置SSD-MobileNet网络训练境搭建 【Jetson目标检测SSD-MobileNet应用实例】(二)制作自己的数据集–数据集的采集、标注、预处理 【Jetson目标检测SSD-MobileNet应用实例】(三)训练自己的检测模型和推理测试 关于Jetson nano或者NX上的

    2023年04月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包