opencvの課題に関する質問。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
らいと

opencvの課題に関する質問。

#1

投稿記事 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の課題に関する質問。

#2

投稿記事 by らいと » 7年前

らいと さんが書きました:
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;
}

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

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

#3

投稿記事 by usao » 7年前

facesの最初の要素に関してのみぼかし処理を行っているのを
単にfacesの全ての要素に関して行うようにに変更するだけの話ではないでしょうか.
何が問題なのでしょう?

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

返信

“C言語何でも質問掲示板” へ戻る