RaspberryPi-OpenCvの自動起動-スクリプト-cv :: imshow()のエラー

Lodrik

簡単な説明:

起動後にsystemdサービススクリプトを介して実行可能ファイル(opencvバイナリファイル、c ++経由で生成)を自動起動したいのですが、失敗します。

エラーを、ウィンドウを開いて画像を表示するコードステートメント「cv :: imshow(....)」に絞り込みました。この時点で、コードは次のエラーをスローします:「QXcbConnection:ディスプレイに接続できませんでした」

ただし、sh-scriptまたはバイナリを手動で実行すると、どちらも正常に機能します。私はstackoverflowで最も一般的なエラーを検索し、見つけたすべてを修正しようとしました。私はかなり確信しています:

  1. 私のサービスファイルは実際に開始時に実行されます(エラーが発生するまで)
  2. バイナリファイルの手動実行は正常に機能します
  3. .shスクリプトの手動実行は正常に機能します
  4. ランタイムリンクエラーはありません(.sh-scriptを参照)

助けていただければ幸いです。エラーの修正を手伝ってください。そもそもなぜこのエラーが発生するのかを説明してください。どうもありがとう :)

私のシステム:

Machine: Raspberry Pi 3 Model B
Architecture: arm32 / ARMv7
OS: NOOBS

/ etc / systemd / system /(test.service)のスクリプト:

[Unit]
Description=lalala

[Service]
Type=oneshot
ExecStart=/bin/bash "/home/pi/Desktop/test.sh" start
ExecStop=/bin/bash "/home/pi/Desktop/test.sh" stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

さらに、次のコマンドを実行しました。

sudo chmod u+rwx /etc/systemd/system/test.service

sudo systemctl enable test

また、サービスを手動で開始すると、ブートプロセス中の自動開始時と同じエラー出力で実行されます。

sudo systemctl enable test

私のシェルスクリプト(test.sh):

#!/bin/sh -e

exec 2> /tmp/test.sh.log       # send stderr to a log file
exec 1>&2                      # send stdout to the same log file
set -x                         # tell sh to display commands before execution


echo "in script"


start() 
{
    echo "in start"

    sleep 30

    LD_LIBRARY_PATH=/usr/local/OpenCV/lib:/usr/local/SFML/lib:/usr/local/curl/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH

    /home/pi/Desktop/test/main -e &
}


# THE OTHER CASES, NOT PUT IN HERE (stop, status)


case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status 
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac

exit 0

私のソースコードの最小限の例:(実行可能)

#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main()
{
    cv::Mat frame;
    cv::namedWindow("result", cv::WINDOW_NORMAL);

    ## CRASH

    return 0;
}

PS:

私はこのような同様のスレッドがあることを知っていますimshowで開始時にOpenCVスクリプトを実行します)。しかし、この質問に対する解決策はなく、共有する情報が多いので、新しいスレッドを開始する方が適切だと思いました。

Lodrik

幸いなことに、私は問題を解決しました:

問題は、serviced-scriptの構成にありました。Xディスプレイの場所にDISPLAY変数が必要であることは知っていましたが、承認が必要であることに気づいていませんでした。このスレッドは私がそれを理解するのを助けました:

https://unix.stackexchange.com/questions/85244/setting-display-in-systemd-service-file

要するに:

これらを/ etc / serviced / serviceのtest.serviceの行に追加します。

Environment=XAUTHORITY=/home/pi/.Xauthority
Environment=DISPLAY=:0.0

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Raspberrypi-起動tkinterスクリプトの問題

分類Dev

crontabbashスクリプトの実行-RaspberryPi

分類Dev

RaspberryPIの起動時にOpenVINOPythonスクリプトを実行する

分類Dev

opencv cv :: Ptrの動的キャスト

分類Dev

Pythonスクリプトを使用してminecraftサーバーのjarファイルを起動するRaspberryPi

分類Dev

Raspberrypiでの起動時にPythonスクリプトを開始するのが難しい

分類Dev

起動時にPythonスクリプトを実行します(RaspberryPi上のArchLinux ARM)

分類Dev

AWSSSMサービスを使用した起動時のRaspberryPiアップデート

分類Dev

cv2.imshowの使用エラー(不特定のエラー)

分類Dev

起動時およびRaspberryPiのバックグラウンドで無限のwhileループを使用してbashスクリプトを実行する

分類Dev

raspberrypiにログインするためのスクリプト

分類Dev

cv :: text :: OCRTesseractがRaspberryPiのフィルターを尊重しない

分類Dev

起動スクリプトの自動sudo権限

分類Dev

Debianで起動した後の自動スクリプト起動

分類Dev

PyGameUIのトラブル-RaspberryPi

分類Dev

NFS共有からのRaspberryPiの起動

分類Dev

RaspberryPIでSpringBootの起動が遅い

分類Dev

RaspberryPiでの起動時に大洪水デーモン1.3.10を自動起動します

分類Dev

raspberrypiのリモートデスクトップが機能しない

分類Dev

RaspberryPiでのufwインストールエラー

分類Dev

iOSアプリの自動起動

分類Dev

RaspberryPiでのスクリーンセーバーのオンとオフ-Pythonのスクリプト

分類Dev

RaspberryPiのTensorflow

分類Dev

RaspberryPiにリクエストを含むサーバーにファイルを自動的にアップロードさせる

分類Dev

私のPythonスクリプトをubuntuで自動的に起動する方法

分類Dev

リモート デスクトップの使用時にプログラムを自動起動しない

分類Dev

ビデオでフレームのトリミングされた部分を表示する:エラー(-215)size.width> 0 && size.height> 0 in function cv :: imshow

分類Dev

スクリプト、Rscriptの自動化

分類Dev

SQLスクリプトの自動化

Related 関連記事

  1. 1

    Raspberrypi-起動tkinterスクリプトの問題

  2. 2

    crontabbashスクリプトの実行-RaspberryPi

  3. 3

    RaspberryPIの起動時にOpenVINOPythonスクリプトを実行する

  4. 4

    opencv cv :: Ptrの動的キャスト

  5. 5

    Pythonスクリプトを使用してminecraftサーバーのjarファイルを起動するRaspberryPi

  6. 6

    Raspberrypiでの起動時にPythonスクリプトを開始するのが難しい

  7. 7

    起動時にPythonスクリプトを実行します(RaspberryPi上のArchLinux ARM)

  8. 8

    AWSSSMサービスを使用した起動時のRaspberryPiアップデート

  9. 9

    cv2.imshowの使用エラー(不特定のエラー)

  10. 10

    起動時およびRaspberryPiのバックグラウンドで無限のwhileループを使用してbashスクリプトを実行する

  11. 11

    raspberrypiにログインするためのスクリプト

  12. 12

    cv :: text :: OCRTesseractがRaspberryPiのフィルターを尊重しない

  13. 13

    起動スクリプトの自動sudo権限

  14. 14

    Debianで起動した後の自動スクリプト起動

  15. 15

    PyGameUIのトラブル-RaspberryPi

  16. 16

    NFS共有からのRaspberryPiの起動

  17. 17

    RaspberryPIでSpringBootの起動が遅い

  18. 18

    RaspberryPiでの起動時に大洪水デーモン1.3.10を自動起動します

  19. 19

    raspberrypiのリモートデスクトップが機能しない

  20. 20

    RaspberryPiでのufwインストールエラー

  21. 21

    iOSアプリの自動起動

  22. 22

    RaspberryPiでのスクリーンセーバーのオンとオフ-Pythonのスクリプト

  23. 23

    RaspberryPiのTensorflow

  24. 24

    RaspberryPiにリクエストを含むサーバーにファイルを自動的にアップロードさせる

  25. 25

    私のPythonスクリプトをubuntuで自動的に起動する方法

  26. 26

    リモート デスクトップの使用時にプログラムを自動起動しない

  27. 27

    ビデオでフレームのトリミングされた部分を表示する:エラー(-215)size.width> 0 && size.height> 0 in function cv :: imshow

  28. 28

    スクリプト、Rscriptの自動化

  29. 29

    SQLスクリプトの自動化

ホットタグ

アーカイブ