【问题标题】:Running OpenCV script on boot w/ RPi使用 RPi 在启动时运行 OpenCV 脚本
【发布时间】:2019-02-04 23:09:27
【问题描述】:

我有一个运行 python 3.7.2 和 OpenCV 4.0.1 的 Raspberry Pi 3。我正在尝试在 pi 启动时运行 OpenCV 脚本,但似乎没有任何方法有效。每次我尝试从 .bashrc 之类的东西运行脚本时,它都会说它不在 cv 环境中,即使我将“workon cv”放在运行脚本的命令上方也是如此。非常感谢任何帮助,谢谢。

【问题讨论】:

  • 您好 Ethan,欢迎来到堆栈。你能提供更多信息吗?你能让你的脚本在你的树莓派上运行吗?你是如何安装python的?它是通过 apt-install 还是通过 mini-conda?你能提供树莓派报告的实际错误吗?您提供的信息越多,其他人就越容易帮助您。
  • @SteveCarter 当然,我通过 apt-install 安装了 python,当我手动运行它时脚本运行良好。错误本身只是一个导入错误,说“未定义名称'cv2'”。这会在我不在 opencv 环境中时出现。
  • 如果您需要更多信息,请告诉我,我会创建一个聊天室继续对话。

标签: python opencv raspberry-pi computer-vision raspberry-pi3


【解决方案1】:

我将运行我的 python 文件,或 /etc/rc.local 中的任何启动文件。 https://unix.stackexchange.com/questions/49626/purpose-and-typical-usage-of-etc-rc-local 可能有助于解释。
另外,我相信启动时运行的python版本与登录shell时运行的版本不同。 运行脚本时,您是否只是从命令行调用:

python myscript

“myscript”是您希望执行的那个? 我在我的 linux 服务器上启动时遇到了类似的问题调用脚本。我的解决方法是找到并调用我要运行的 python 版本的绝对路径。

例如: 如果我使用 /usr/bin/python3 中的内置 python 版本来运行我创建的小程序,我会看到:

scarter@sb-gateway:~$ /usr/bin/python3 camera_sentry_beta_v2.py
Traceback (most recent call last):
  File "camera_sentry_beta_v2.py", line 3, in <module>
    import cv2
ImportError: No module named 'cv2'
scarter@sb-gateway:~$

好像我在安装了所有模块的地方调用了正确版本的 python(我正在使用 anaconda)

scarter@sb-gateway:~$ /home/scarter/anaconda3/envs/ne/bin/python read_temp.py

我的脚本有效。 启动时运行的 python 版本可能与登录 pi 时运行的版本不同。这可能是路径问题。 运行:

echo $PATH

获取您登录时 pi 加载的路径列表。您可以运行该命令并提供输出吗?

例如,这是我的路径:

/home/scarter/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

我知道我在 /home/anaconda3/bin 下有一个 python 版本,它将首先运行。我也知道我在 /usr/bin 下运行了一个非常不同的版本,它不会具有与以前安装相同的模块。最后,我会做两件事。首先找到您希望运行的 python 的绝对路径,并在启动时运行脚本时调用它。其次,如果可以的话,我会尝试使用与 .bashrc 不同的地方来调用您的脚本。

另外,关于“workon”命令。这表明您已经创建了一个虚拟环境来运行 python。我参考这个示例来自 https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

$ workon
$ mkvirtualenv mynewenv
New python executable in mynewenv/bin/python
Installing setuptools.............................................
..................................................................
..................................................................
done.
(mynewenv)$ workon
mynewenv
(mynewenv)$

例如,如果您创建了上述环境,则需要从mynewenv/bin/python调用python

【讨论】:

  • 非常感谢您的回复,我通过将命令移至 shell 脚本并在 .bashrc 中调用 shell 脚本解决了我的问题。
【解决方案2】:

您可以在自动启动时在 LEXD-pi 文件夹中添加此脚本

转到./home/pi/.config/lxsession/LXDE-pi/

sudo nano autostart

    @lxpanel --profile LXDE
    @pcmanfm --desktop --profile LXDE
    @xscreensaver -no-splash
    @/usr/bin/[python3/python] [your script address]

在启动 xstart 后运行你的脚本

更多关于这个话题:

Top issue on raspberrypi.stackexchange, link for detial on raspberrypi forums

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2011-09-17
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多