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

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

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

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3679閲覧

肌色検出の出力について

KenKenPaPPa

総合スコア24

OpenCV

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/01/12 05:33

肌色検出の最後の描画のところでエラーが出てしまします
画像のサイズの問題なのかとおもいますが、
どう間違えているのか、どう改善したらのいいかわかりません。

開発環境
Visual Studio C++ OpenCV3

エラー文
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow

C++

1int main(int argc, const char** argv) 2{ 3 // グレースケールで画像読み込み 4 cv::Mat src = cv::imread("faces.jpg", cv::IMREAD_GRAYSCALE); 5 cv::Mat ori = src; 6 cv::Mat hsv_img; 7 cv::Mat smooth_img; 8 cv::Mat hsv_skin_img; 9 // 画像の読み込みに失敗したらエラー終了する 10 if (src.empty()) 11 { 12 std::cerr << "Failed to open image file." << std::endl; 13 return -1; 14 } 15 16 hsv_skin_img = cv::Scalar(0, 0, 0); 17 cv::medianBlur(src, smooth_img, 7); //ノイズがあるので平滑化 18 smooth_img = cv::Mat(cv::Size(640, 480), CV_8UC3); 19 cv::cvtColor(smooth_img, hsv_img, CV_BGR2HSV); //HSVに変換 20 21 for (int y = 0; y < 480; y++) 22 { 23 for (int x = 0; x < 640; x++) 24 { 25 int a = hsv_img.step*y + (x * 3); 26 if (hsv_img.data[a] >= 0 && hsv_img.data[a] <= 15 && hsv_img.data[a + 1] >= 50 && hsv_img.data[a + 2] >= 50) //HSVでの検出 27 { 28 hsv_skin_img.data[a] = 255; //肌色部分を青に 29 } 30 } 31 } 32 33 // 二値化 34 cv::Mat bin; 35 36 cv::namedWindow("肌色", cv::WINDOW_AUTOSIZE); 37 cv::imshow("肌色", hsv_skin_img); 38 39}

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

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

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

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

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

guest

回答1

0

ベストアンサー

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow

エラーメッセージが示す通り、hsv_skin_imgが有効な画像を構成していません(幅/高さが0)。

cv::Mat型の変数hsv_skin_imgにサイズを指定していないため、サイズがゼロの行列となっています。変数の初期化時に cv::Mat(cv::Size(幅, 高さ), CV_8UC3); などを設定する必要があります。

投稿2017/01/12 05:43

編集2017/01/12 05:43
yohhoy

総合スコア6191

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問