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

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

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

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

Q&A

解決済

1回答

4265閲覧

openCVでdetectMultiScaleでエラー

north_redwings

総合スコア32

C++

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

0グッド

0クリップ

投稿2018/05/25 14:21

openCVを学校で扱い、自分のパソコンでも実行しようと思いましたが、エラーがでました。

c++

1/*暫定プログラム*/ 2//1.顔認識 3//2.切り取る 4//3.合成する 5 6#include <opencv2/opencv.hpp> 7#include <iostream> 8#include <stdlib.h> 9#include <time.h> 10 11using namespace std; 12using namespace cv; 13 14 15//画像内の顔を認識して矩形で切り取って返す関数 16Mat DetectFace(Mat &image, string &cascade_filename){ 17 18 //分類器の読み込み(ここではhaarを利用する) 19 cv::CascadeClassifier cascade; 20 cascade.load(cascade_filename); 21 22 //切り取った画像をMat型に格納する変数 23 cv::Mat subimage; 24 25 //認識した矩形を格納するための変数 26 vector<Rect> faces; 27 28 //線の色の候補リスト 29 // cv::Scalar colors[] = { 30 // {{0,0,255}}, {{0,128,255}}, {{0,255,255}}, 31 // {{0,255,0}}, {{255,128,0}}, {{255,255,0}}, 32 // {{255,0,0}}, {{255,0,255}} 33 // }; 34 // 35 36 37 cascade.detectMultiScale(image, faces, 1.1, 3, 4, Size(20, 20)); 38 //引数 -> 画像、出力矩形、縮小量スケール、最低矩形数、フラグ、最小矩形 39 40 for (int i=0; i < faces.size(); i++){ 41 //切り取る画像の矩形を指定してsubimageに代入する 42 cv::Rect roi(Point(faces[i].x, faces[i].y), 43 Point(faces[i].x+faces[i].width, faces[i].y+faces[i].height)); 44 subimage = image(roi); 45 46 //認識した箇所を矩形で囲む 47 /* rectangle(image, Point(faces[i].x, faces[i].y), 48 Point(faces[i].x+faces[i].width, faces[i].y+faces[i].height), 49 Scalar(0,200,0), 3, CV_AA);*/ 50 } 51 52 //認識した箇所を円形で囲む 53 /*for(std::vector<cv::Rect>::iterator r = faces.begin(); r!= faces.end(); r++){ 54 cv::Point center; 55 int radius; 56 center.x = cvRound(r->x+r->width*0.5); 57 center.y = cvRound(r->y+r->height*0.5); 58 radius = cvRound((r->width+r->height)*0.25); 59 cv::circle (image, center, radius, colors[7], 1, 8, 0); 60 }*/ 61 62 return subimage; 63} 64 65 66int main(int argc, char *argv[]){ 67 Mat image = imread(argv[1]); 68 string FILE_NAME = "/Desktop/haarcascade_frontalface_alt.xml"; 69 Mat DetectedFaceImage = DetectFace(image, FILE_NAME); 70 imshow("Detected Face Image", DetectedFaceImage); 71 waitKey(0); //Kは大文字 72 return 0; 73}

環境はMacです。openCVでテスト用に作った円を描くファイルは無事に実行できました。
エラーは次の様な形で出ています。

OpenCV(3.4.1) Error: Assertion failed (!empty()) in detectMultiScale, file /tmp/opencv-20180504-71644-brjrbc/opencv-3.4.1/modules/objdetect/src/cascadedetect.cpp, line 1698 libc++abi.dylib: terminating with uncaught exception of type cv::Exception: OpenCV(3.4.1) /tmp/opencv-20180504-71644-brjrbc/opencv-3.4.1/modules/objdetect/src/cascadedetect.cpp:1698: error: (-215) !empty() in function detectMultiScaleコード

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

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

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

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

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

guest

回答1

0

自己解決

fileの場所を移動したら上手くいきました(?)

投稿2018/05/25 15:14

north_redwings

総合スコア32

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問