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

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

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

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

Q&A

解決済

2回答

12377閲覧

OpenCV カメラ映像 顔認識 cvterrorを解消できない

yumiwo

総合スコア5

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

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

0グッド

0クリップ

投稿2020/05/06 17:15

編集2020/05/06 17:24

#OpenCVを使って顔認識のデモをカメラ映像で作りたい
プログラム初心者です。Raspberry PiとRaspiカメラv2を使用して顔認識のデモを作りたいと思い、コードを打ち込んでみたのですが、突破できないエラーに遭遇したので、なにかご存知の方に知恵をお借りしたいです。

`
エラーメッセージ
[ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (1759) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Failed to allocate required memory.
[ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
Traceback (most recent call last):
File "face_demo.py", line 23, in <module>
igray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.3.0-dev) /home/pi/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

該当のソースコード

python3

1 2import cv2 3 4# 以下のカスケードファイルは実行するpythonファイルと同じディレクトリに移動しておく 5cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") 6 7# カメラモジュールから入力を開始 8capture = cv2.VideoCapture(0) 9 10# 検出時のサイズを指定 11MIN_SIZE = (150, 150) 12 13# while文で処理を指定 14while True: 15 # 「ESC」を押したら処理を止める、waitKey()はキーボード入力を処理する関数で、引数は入力を待つ時間を指定 16 if cv2.waitKey(1) & 0xFF == 27: 17 break 18 19 # カメラ画像を読み込む 20 _, image = capture.read() 21 # raspiのカメラだと反転しているので修正 22 image = cv2.flip(image, -1) 23 # OpenCVでグレースケール化、計算処理を高速化するため 24 igray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 25 # 顔検出を行う部分 26 faces = cascade.detectMultiScale(igray, minSize=MIN_SIZE) 27 28 # 顔検出時以外もフレームを表示させておく 29 if len(faces) == 0: 30 cv2.imshow('frame', image) 31 continue 32 for (x, y, w, h) in faces: 33 color = (255, 0, 0) 34 cv2.rectangle(image, (x, y), (x+w, y+h), 35 color, thickness=8) 36 37 # 顔が検出されたら顔の周りに枠を表示してフレームを表示、引数にはウィンドウ名と表示する画像を指定、ループが高速に動作するので画像が連続で表示され映像のように映る 38 cv2.imshow('frame', image) 39 40 # 顔を検出したらターミナルに「face」と表示 41 print("face") 42 43capture.release() # カメラを解放 44cv2.destroyAllWindows() # ウィンドウを破棄

補足情報

OpenCVのバージョンは4.3.0-devです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

yumiwoさん、

sudo modprobe bcm2835-v4l2を行なった後、プログラムを実行するとどうですか?

追記)
capture.read()で正常に取得できたら、処理するようにしてみるとどうですか?

... # カメラ画像を読み込む. 読み込み成功/失敗で、ret=True/Falseになる ret, image = capture.read() if ret: # うまく取得できたら処理をする image = cv2.flip(image, -1) . . . . else: # 取得失敗時の処理 pass ...

投稿2020/05/08 15:26

編集2020/05/10 08:20
mt08

総合スコア1825

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

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

yumiwo

2020/05/08 17:39

実行してみたところエラー文のWARNの部分は全てなくなりました。 ありがとうございます。 しかしながら, Traceback (most recent call last): File "face_demo.py", line 23, in <module> igray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.error: OpenCV(4.3.0-dev) /home/pi/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor' の部分のエラーの解消法がわかりません。 何かご存知でしたら教えていただけませんか?
mt08

2020/05/08 19:26

image が取得できてますか?
yumiwo

2020/05/11 06:29

コメントありがとうございます。 試してみます。
yumiwo

2020/05/13 16:29

imageの取得はできていませんでした。
guest

0

open VIDEOIO(V4L2:/dev/video0): can't open camera by index

カメラを正しく取得できていないようです。

  • カメラは正しくつながっていますか?
  • 複数のカメラが接続されていたりしますか?

上記、ご確認ください。

投稿2020/05/06 21:08

kazto

総合スコア7196

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

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

yumiwo

2020/05/07 00:42

回答ありがとうございます。 カメラは1台のみ接続しています。 またカメラの接続は以下のコマンドで確認はしました。 $ vcgencmd get_camera supported=1 detected=1 これだけでは不十分なのでしょうか?
yumiwo

2020/05/07 06:09

試してみました。 写真をとることはできていると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問