Jetson Nano配置VSCODE+OpenCv+python中pylint报错cv2并且无自动识别和补全的问题

最近刚刚一只脚踏入研究生的大门,需要用Nvidia的板子做一些东西。下面简单总结一下遇到问题的解决方法。问题如标题。我的入门教学就是比较著名的Paul McWhorter的视频,下面是B站(前一部分有英文字幕)和YouTube的链接。这个白头发白眉毛白胡子老爷子发音异常的标准以至于听起来基本没有困难。里面基本可以说是手把手的帮助你装机,配置环境,入门python,运行神经网络的demo。由于我本身不太需要神经网络的参与,所以后续的视频关注的不是很多。

【AI on the Jetson Nano】国外大神超超超简单明了的人工智能入门课程(英文字幕)_哔哩哔哩_bilibilihttps://www.youtube.com/playlist?list=PLGs0VKk2DiYxP-ElZ7-QXIERFFPkOuP4_人工智能学习过程中软件+硬件方式学习可以事半功倍,尤其是配以jetson nano英伟达这款优秀的边缘计算设备,让你学习效果事半功倍,再加上Paul McWhorter深入浅出的讲解,让我们快速的进入人工智能领域。本系列视频,配以英文字幕学习,减少生肉https://www.bilibili.com/video/BV12Z4y1x72C?p=1&share_medium=iphone&share_plat=ios&share_session_id=1CA70BB9-1C0C-46FC-A576-D8EB9A85378A&share_source=WEIXIN&share_tag=s_i×tamp=1638880957&unique_k=0oxSjp6https://youtube.com/playlist?list=PLGs0VKk2DiYxP-ElZ7-QXIERFFPkOuP4_https://youtube.com/playlist?list=PLGs0VKk2DiYxP-ElZ7-QXIERFFPkOuP4_

下面来说遇到的问题:

这是根据视频配置vscode和opencv时候的问题。可以看到python脚本正确运行但是pylint对cv2并不识别,并且在写函数的时候并没有自动补全和跳转的功能。也就是说,python的opencv库可以正确使用但是编译器无法识别。在Paul的视频里并没有出现这样的情况,他在后面的视频里可以正常的识别并且自动补全。

因为我手滑直接安装了pylint(老爷子在视频里直接忽略了),所以还牵扯到pylint的问题。在搜索了很多相关的内容之后,网上遇到问题的还是很多,但是解决方法有队的有错的并且对原因也不能很好的说明,在此做一个整理。

一些些讨论:

 首先是Nano的问题。

老爷子的视频是19年的,当时Nvidia给出的系统镜像版本使得Nano并没有安装过opencv。而到现在我安装的最新系统镜像是官网的4.6版本。

英伟达官方开机教程:

Getting Started With Jetson Nano Developer Kit | NVIDIA Developerhttps://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#setup英伟达官方下载中心:

https://developer.nvidia.com/zh-cn/embedded/downloadshttps://developer.nvidia.com/zh-cn/embedded/downloads随着版本的更迭Nano官方做出了很多更新,在最新版中Nano的系统镜像里是已经安装好opencv的,我在csdn中的一篇帖子中也得到了认证。

玩转Jetson Nano(二)检查已安装组件_beckhans的博客-CSDN博客_jetsonnano查看cuda系统成功登录后,我们来继续调试软件部分1.连接Xshell,XFTP安装上系统以后,打开Xshell,输入IP地址,端口号22,无需任何设置,马上就能连上Xshell 6 (Build 0121)Copyright (c) 2002 NetSarang Computer, Inc. All rights reserved.Type `help' to learn how to...https://blog.csdn.net/beckhans/article/details/89138876直接在控制台里输入

pkg-config opencv4 --modversion

得到 opencv的版本是4.1.1,可见opencv是预装好的。但是追随到Paul的那个时代里系统镜像有没有预装opencv不得而知。但是按照19年的教程进行的话可以正常运行包含cv2库的python脚本,这也就说明以上问题应该是vscode的环境所导致,毕竟Paul的视频里只有

sudo apt-get install python3-opencv

这么一条是和配置opencv环境有关系的。不得不说python配置opencv真是简单,之前用c++弄得要死要活。在Nvidia的讨论社区里发现了一条有同样问题的讨论贴,虽然是英文的,但是很建议有同样问题的同学看一看,能看出来讨论贴的楼主也是个萌新,但是非常有毅力地进行各种控制变量法进行分析。我也是在这个讨论贴里找到了解决办法,同样也是Paul,他在很久以后的第48集更新了大家给他反馈的这个问题并且做出了解答。大家可以看一看。

Jetson Nano latest SD card image (r32.3.1) contains openCV 4.1.1 but no ".py" source - #6 by jganci3 - Jetson Nano - NVIDIA Developer ForumsI recently bought a Jetson Nano developer kit and downloaded the latest SD card image, r32.3.1. Created the SD card, booted the nano, installed the code-OSS (free version of Microsoft’s Visual Studio IDE) to develop Pyth…https://forums.developer.nvidia.com/t/jetson-nano-latest-sd-card-image-r32-3-1-contains-opencv-4-1-1-but-no-py-source/111226/6

最后给出解决办法:

在Ubuntu控制台输入指令查询Nano预安装的python opencv位置

dpkg -L libopencv-python

控制台会显示所有有关python opencv的文件位置,注意最后的这个.so文件,他的位置即是我们需要添加到vscode环境中的。我的是“/usr/lib/python3.6/dist-packages/cv2/python-3.6”。可能不同的板子是不同的,这点需要注意。

接下来就是vscode的设置。在vscode输入ctrl+shift+p调出用于执行命令的输入框,查找Preferences:Open Settings(JSON)打开settings.json文件。

 一些更改字体字号的配置也被保存在了里面。接下来在大括号里尾部补充代码:

"python.pythonPath": "/usr/bin/python3",
"python.linting.pylintArgs": ["-generate-members","-extension-pkg-whitelist=cv2"],
"python.autoComplete.extraPaths": ["/usr/lib/python3.6/dist-packages/cv2/python-3.6"],

这里做一些解释:

第一行是指定python的解释器,在Paul的教学视频里他在vscode的命令框里(ctrl+shift+p)用Python: Select interpreter手动配置过,这里Paul的settings.json是存在这一句的,所以我也加上。

第二行是让pylint忽略对cv2的报错,将cv2加入白名单,可以直接套用。

第三行是加入autoComplete(自动补全)的额外路径,即之前查询的路径。最终如下:

左上角File保存(ctrl+s)后重新启动vscode,可以看出pylint不再报错,输入cv2.后可以自动补全函数,并且完整输入函数后也可以看到输入参数的注释。大功告成。但是我不是很清楚vscode这样修改配置文件是只在这一文件夹下生效还是对IDE生效,再打开新的工程目录需不需要重新配置?总而言之问题解决。

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值