閲覧有難うございます。
サンプルコードにある引数"faces"をreturnしたいのですが、単純に返せないですよね?
今考えている方法としては、vector<Rect>のfacesをMatに変換できないかを考えています。
一応、載せておきます。
C++
1#include "opencv2/highgui.hpp" 2#include "opencv2/imgproc.hpp" 3#include "opencv2/opencv.hpp" 4#include "opencv2/highgui/highgui.hpp" 5#include <iostream> 6using namespace std; 7using namespace cv; 8 9std::vector<cv::Rect> detectFaceInImage(Mat &image,string &cascade_file){//変更箇所 10 CascadeClassifier cascade; 11 cascade.load(cascade_file); 12 13 vector<Rect> faces; 14 cascade.detectMultiScale(image, faces, 1.1,3,0,Size(20,20)); 15 16 for (int i = 0; i < faces.size(); i++){ 17 rectangle(image, Point(faces[i].x,faces[i].y),Point(faces[i].x + faces[i].width,faces[i].y + faces[i].height),Scalar(0,200,0),3,CV_AA); 18 } 19 return faces; 20} 21 22int main(int argc, const char *argv[]) 23{ 24 Mat image = imread(argv[1]); 25 string filename = argv[2]; 26 vector<cv::Rect> detectFaceImage = detectFaceInImage(image, filename);//変更箇所 27 imshow("detect face",detectFaceImage); 28 waitKey(0); 29 30 return 0; 31}
これだとコンパイルが通るのは通るのですが、次のとおりになります。
C++
1terminate called after throwing an instance of 'std::logic_error' 2 what(): basic_string::_S_construct null not valid 3中止 (コアダンプ)
回答1件
あなたの回答
tips
プレビュー