jetson nano打开摄像头问题


import cv2

def main():
    cap = cv2.VideoCapture('nvarguscamerasrc ! video/x-raw(memory:NVMM), width=640, height=480, format=(string)NV12, framerate=(fraction)20/1 ! nvvidconv ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink', cv2.CAP_GSTREAMER)
    if not cap.isOpened():
        print("i love you")
        return
    while True:
        ret, frame = cap.read()
        if not ret:
            print("1")
            break
        cv2.imshow("i love ab", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()
 

在jerson nano中,我用python2运行这个代码可以打开摄像头,但是用python3打开却不行,这是为什么,python3的cv2版本是4.5.2,opencv的版本是4.1.1

引用gpt回答 有帮住的话 采纳一下
从你提供的代码和信息来看,Python 3无法打开摄像头的问题可能有以下几个原因:

  1. OpenCV Python绑定版本不兼容
    Python 2用的opencv-python版本比较低,而Python 3需要较新版本的opencv-python,版本需要与OpenCV 4.x兼容。
    可以尝试在Python 3中重新安装opencv-python,确保版本兼容。
  2. GStreamer管道配置问题
    Python 3中GStreamer的管道设置可能需要调整,可以参考PyImageSearch博客的样例管道配置。
  3. Python 3字符串编码问题
    Python 3需要将管道格式设置为字节字符串编码,例如:
cap = cv2.VideoCapture(b'nvarguscamerasrc ! ...', cv2.CAP_GSTREAMER)

  1. 测试简单的视频管道
    可以先测试简单的管道,例如从文件读取,确定Python 3 + OpenCV是否工作正常。
  2. 检查日志,启用DEBUG日志
    GStreamer和OpenCV运行时启用日志,查看是否有错误产生。

参考 https://forums.developer.nvidia.com/t/install-opencv-for-python3-in-jetson-nano/74042

  • 你可以参考下这篇文章:Jetson nano 为Python3安装opencv
  • 除此之外, 这篇博客: jetson nano用python编写图像发布、订阅话题(二)卸载自带opencv4.1.1,并安装3.4.12中的 1. jetson nano卸载自带的opencv 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • sudo apt-get purge libopencv*
    sudo apt autoremove
    

    查看opencv版本

    pkg-config opencv --modversion
    

    若没有显示说明已经卸载成功

  • 以下回答由chatgpt基于相关博客总结生成:

    该问题可能是由于Jetson Nano上的Python3没有正确关联到OpenCV导致的。根据参考资料中的信息,您可以通过以下步骤解决该问题:

    1. 确保您已经安装了所需的依赖环境。根据参考资料中的段落2,可以使用以下命令安装依赖环境:
    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
    sudo apt-get install libgtk2.0-dev
    sudo apt-get install pkg-config
    
    1. 下载并安装OpenCV。根据参考资料中的段落3,您可以从OpenCV官网下载源代码,并按照指示进行编译和安装。注意要选择与您当前OpenCV版本相对应的源代码版本。

    2. 配置Python3关联到安装的OpenCV库。为了确保Python3正确关联到您所安装的OpenCV库,您可以执行以下步骤:

    3. 打开终端并输入以下命令:
    sudo gedit /etc/ld.so.conf
    
    • 将在打开的文件末尾添加"/usr/local/lib",保存并退出文件。
    • 在终端中输入以下命令让系统加载新的库配置:
    sudo ldconfig
    sudo gedit /etc/bash.bashrc
    
    • 在打开的文件末尾添加以下内容并保存退出:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    
    1. 现在,将Python版本设置为3,并尝试打开摄像头。根据您的描述,您可以使用以下命令将Python版本设置为3:
    sudo ln -sf /usr/bin/python3 /usr/bin/python
    

    然后运行您的代码并尝试打开摄像头,看看是否成功。

    如果以上步骤没有解决问题,可能是由于Python3和OpenCV版本之间的不兼容性或其他原因导致的。在这种情况下,您可能需要升级或降级Python3和OpenCV的版本,以确保它们能够正确地配合使用。这需要进一步的研究和实践。

    希望这些步骤能够帮助您解决问题。如果您有任何其他问题或需要进一步的帮助,请随时告诉我。