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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

3436閲覧

PythonとOpenCVを用いて、画像から人物検出

obakoh

総合スコア11

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

1クリップ

投稿2020/06/17 15:32

前提・実現したいこと

Python初心者です。
PythonとOpenCVを用いて、画像から人物検出を行いたいです。
エディタはJupiterを使っています。

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

error Traceback (most recent call last)
<ipython-input-1-62ad54662838> in <module>
12
13 # 人を検出した座標
---> 14 human, r = hog.detectMultiScale(im, **hogParams)
15
16 # バウンディングボックス

error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:235: error: (-215:Assertion failed) s >= 0 in function 'cv::setSize'

該当のソースコード

import cv2
#処理したい画像を選択
img_name = '3374709_s.jpg'

im = cv2.imread(img_name)
#HoG特徴量の計算
hog = cv2.HOGDescriptor()

#サポートベクタマシンによる人検出
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
hogParams = {'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.2}

#人を検出した座標
human, r = hog.detectMultiScale(im, **hogParams)

#バウンディングボックス
for (x, y, w, h) in human:
cv2.rectangle(im, (x, y),(x+w, y+h),(0,50,255), 3)

#検出した画像を保存
cv2.imwrite('out_default_'+img_name,im)

試したこと

以下のサイトを参考にしました。
https://betashort-lab.com/画像処理/pythonopencvhogsvmによる人物検出/」

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

エラー内容がわからなくて、たぶんモジュールが足りないということでしょうか?
そうでしたら、何をどうインストールすればいいか教えてほしいです。
アナコンダでインストールしました。

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

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

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

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

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

cugel

2020/06/21 18:02

画像 3374709_s.jpg のサイズはどのくらいでしょうか? 縮小したものであれば、もとのサイズの画像で試すとどうなるでしょうか。
obakoh

2020/06/24 15:29

すみません画像の読み込みに関しては作業ディレクトリが異なるためでした。すごい初歩的な問題ですみませんでした。
guest

回答1

0

ベストアンサー

エラー内容がわからなくて、たぶんモジュールが足りないということでしょうか?

おそらく違います。モジュールが足りない場合は、ModuleNotFoundError: No module named '足りないモジュール名'のようなエラーが出ます。

error: (-215:Assertion failed) s >= 0 in function 'cv::setSize'

こちらで検索してみました。

以下調べた際に出てきたページをいくつか貼ります。

負の数は扱えないようです。

こちらにも負の数は扱えないとあります。

負の数が含まれていないかをまず確認するのが良さそうだと思いました。

投稿2020/06/21 14:19

kabayan55

総合スコア389

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問