ページ 11

opencvの課題に関する質問。

Posted: 2018年6月26日(火) 09:51
by らいと
現在学校でOpenCVでのC++を用いた画像処理の勉強をしているのですが、わからない課題があるので教えていただきたいです。
(課題) 以下は画像から顔の検出をし、その顔部分のみにぼかし処理を行うプログラムである。しかしこのプログラムは、画像中に複数の顔を検出しても、その内最初に検出した顔部分にしかぼかし処理を行えない。そこで、複数の顔すべてにぼかしが入るようにプログラムを修正しなさい。

#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <opencv2\opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
Mat img_in = imread("img.png", 1);
int i;

CascadeClassifier cascade;
if (!cascade.load("haarcascade_frontalface_alt.xml")) {
cout << "E1";
return -1;
}
vector<Rect> faces;
Mat img_in_roi = img_in.clone();

cascade.detectMultiScale(img_in, faces, 1.2, 2, CV_HAAR_SCALE_IMAGE, Size(30, 30));
vector<Rect>::const_iterator r = faces.begin();

blur(img_in(*r), img_in_roi(*r), Size(30, 30));
imshow("Img_blur_face", img_in_roi);

waitKey(0);
return 0;
}

Re: opencvの課題に関する質問。

Posted: 2018年6月26日(火) 09:54
by らいと
らいと さんが書きました:
7年前
現在学校でOpenCVでのC++を用いた画像処理の勉強をしているのですが、わからない課題があるので教えていただきたいです。
(課題) 以下は画像から顔の検出をし、その顔部分のみにぼかし処理を行うプログラムである。しかしこのプログラムは、画像中に複数の顔を検出しても、その内最初に検出した顔部分にしかぼかし処理を行えない。そこで、複数の顔すべてにぼかしが入るようにプログラムを修正しなさい。

コード:

 
#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <opencv2\opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
 Mat img_in = imread("img.png", 1);
 int i;

 CascadeClassifier cascade;
 if (!cascade.load("haarcascade_frontalface_alt.xml")) {
 cout << "E1";
 return -1;
 }
 vector<Rect> faces;
 Mat img_in_roi = img_in.clone();

 cascade.detectMultiScale(img_in, faces, 1.2, 2, CV_HAAR_SCALE_IMAGE, Size(30, 30));
 vector<Rect>::const_iterator r = faces.begin();
 
 blur(img_in(*r), img_in_roi(*r), Size(30, 30));
 imshow("Img_blur_face", img_in_roi);

 waitKey(0);
 return 0;
}

Re: opencvの課題に関する質問。

Posted: 2018年6月26日(火) 12:46
by usao
facesの最初の要素に関してのみぼかし処理を行っているのを
単にfacesの全ての要素に関して行うようにに変更するだけの話ではないでしょうか.
何が問題なのでしょう?

考える点があるとすれば,
複数の検出結果が「重なる」場合にどうするのか(重なった領域が他所よりも「過剰に」ぼかされてもよいのか否か)
くらい?