質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3555閲覧

ラズパイとpythonとopenCVで画像認識したいんですが、エラーになってしまいます。

furukawa0115

総合スコア3

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/23 04:38

前提・実現したいこと

部活で作る物体追跡ロボットのため、まずが画像認識をやりたいんですが、
エラーが出てしまいます。基礎知識が全くなってないので、本当に初歩的なミスかもしれませんが、全くわかりません。

発生している問題・エラーメッセージ

select

1select timout 2(10個ほど上のエラーが続く) 3 4VIDEOIO ERROR: V4L: can't open camera by index 0 5カメラを認識できない 6 7エラーメッセージ

該当のソースコード

python

試したこと

USB2.0と3.0があるそうで。試しに挿す場所を変えてみましたが、select timeoutの文が消えただけでした。それ以外は調べてもよくわからず、お手上げです。どうかよろしくおねがいします。

補足情報(FW/ツールのバージョンなど)

おそらくすべて最新バージョンです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Luke02561

2020/04/23 08:39

どのようなコードで試していますか?
thkana

2020/04/23 23:12

「カメラを認識できない」と言っているのですから、Pythonとかそんなの関係なくまずRaspberry Piのシステムがカメラを認識しているかどうか、から確認すべきでしょう。 例えば、カメラがLinuxでは別途デバイスドライバのインストールを必要とするものでないか、とかは確認していますか? (Raspberry Piで、というかLinuxでカメラはいじってないから一般論以上はあまりフォロー出来ないのでこの欄で)
furukawa0115

2020/04/25 08:50

Luke02561さん、コードは下の通りです。 # -*- coding: utf-8 -*- import time import cv2 as cv fn = 'my_pic.jpg' # カメラ初期化 # 解像度の設定 video=cv.VideoCapture(0) if not video.isOpened(): import sys print("カメラを認識できない",file=stderr) exit(1) _,img=video.read() # 顔検出の処理効率化のために、写真の情報量を落とす(モノクロにする) grayimg = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 顔検出のための学習元データを読み込む face_cascade = cv.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml') # 目検出のための学習元データを読み込む eye_cascade = cv.CascadeClassifier('haarcascades/haarcascade_eye.xml') # 顔検出を行う facerect = face_cascade.detectMultiScale(grayimg, scaleFactor=1.2, minNeighbors=2, minSize=(1, 1)) # 目検出を行う eyerect = eye_cascade.detectMultiScale(grayimg) print(facerect) print(eyerect) # 顔を検出した場合 if len(facerect) > 0: # 検出した場所すべてに赤色で枠を描画する for rect in facerect: cv.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0, 255), thickness=3) # 目を検出した場合 if len(eyerect) > 0: # 検出した場所すべてに緑色で枠を描画する for rect in eyerect: cv.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 255, 0), thickness=3) # 結果の画像を表示する cv.imshow('camera', img) # 結果を書き出す cv.imwrite(fn, img) # 何かキーが押されるまで待機する cv.waitKey(0) # 表示したウィンドウを閉じる cv.destroyAllWindows() これは人に手伝って貰ったやつで、ソースコードとかは全く理解出来ていません…。まだ書くことがあれば教えてください、よろしくお願いします。
furukawa0115

2020/04/25 08:59

thkanaさん 多分カメラは認識されていると思います。lsusbのコマンドでもWebカメラの名前が出て来ますし、写真の撮影も問題なく出来ます。Pythonで写真を撮影するプログラムを実行しても写真は取れます
thkana

2020/04/25 09:22

pythonのプログラムをインデントなしで提示するのは単なる嫌がらせと取られても仕方がない行為です。 質問は編集出来ますから、コードとして質問に追記して下さい。 > Pythonで写真を撮影するプログラムを実行しても写真は取れます であるなら、これとの差分がどこにあるのかというのも重要な情報でしょう。可能ならこちらのソースも提示してみては。
guest

回答1

0

同じエラーの質問がありました。(URL
これによると、
cap = cv2.VideoCapture(-1)
でアクティブなカメラの自動指定や、
cap = cv2.VideoCapture('hogehoge.mp4')
で保存ファイルを指定するやり方があるそうです。
もし上2つのどちらもだめであれば、そもそもOpenCVにカメラの機能がインストールできていなかった可能性があるので、再インストールが必要です。
確認するには、

Python

1import cv2 2print(cv2.getBuildInformation())

でできます。これで表示される項目の中に、libv4l/libv4l2:というのがあり、これがNOになっているとWebカメラの機能がインストールされていなかったということです。
再インストールにこちらのサイトが参考になりそうです。
コマンドとしては、

terminal

1$ cd ~/src/cpp/opencv/build 2$ sudo make install 3$ sudo make uninstall 4$ sudo rm -rf /usr/local/include/opencv 5$ rm -rf ~/.cache/opencv 6$ cd ~/src/cpp 7$ rm -rf ~/src/cpp/opencv 8$ cd ~/src/cpp 9$ git clone https://github.com/opencv/opencv.git 10$ git clone https://github.com/opencv/opencv_contrib.git 11$ cd ~/src/cpp/opencv 12$ mkdir build 13$ cd build 14$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=$HOME/src/cpp/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D WITH_FFMPEG=ON -D BUILD_EXAMPLES=OFF .. 15$ make -j$(nproc) 16$ sudo make install 17$ make clean 18$ sudo ldconfig 19 20# OpenCVのPATHを通す 21$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc 22$ source ~/.bashrc

長い道のりになりそうです...

投稿2020/04/25 12:48

編集2020/04/25 12:49
Luke02561

総合スコア404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問