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

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

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

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

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

Q&A

0回答

747閲覧

c++ 動画の顔にモザイクをかける

rerererere

総合スコア0

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

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

0グッド

0クリップ

投稿2022/11/30 17:39

前提

Opencvを用いたc++のプログラミングについて
動画にモザイクをかける

実現したいこと

USBカメラからの画像を顔検出で顔の部分だけ切り取り、その切り取った部分にモザイクをかけ顔にモザイクがかかるというようなことをしたいのですが、切り取った画像をモザイクにするところまでできたのですがそれを元の動画に張り付けることが出来ません。

該当のソースコード

c++

1#include <opencv2/opencv.hpp> 2#include <opencv2/imgcodecs.hpp> 3using namespace cv; 4using namespace std; 5 6int main(void) { 7 CascadeClassifier cascade, cascade2; 8 cascade.load("haarcascade_frontalface_default.xml");//正面顔情報が入っているカスケードファイル読み込み 9 VideoCapture cap(0); 10 if (!cap.isOpened())return -1; 11 Mat original, img, bg; 12 Mat roi_img; 13 while (true) { 14 cap >> original; 15 cap >> img; 16 cap >> bg; 17 if (img.empty())break; 18 cvtColor(bg, bg, COLOR_RGB2RGBA); 19 20 vector<Rect> faces; 21 cascade.detectMultiScale(bg, faces, 1.1, 4, 0, Size(20, 20)); 22 Mat wimage = original.clone(); 23 for (int i = 0; i < faces.size(); i++) //検出した顔の個数"faces.size()"分ループを行う 24 { 25 Rect roi1(faces[i].x, faces[i].y, faces[i].width, faces[i].height); 26 wimage(roi1).copyTo(roi_img); 27 double rate = (double)faces[i].width / roi_img.cols; 28 resize(roi_img, roi_img, Size(), rate, rate); 29 erode(roi_img, roi_img, Mat(), Point(-1, -1), 10); 30 dilate(roi_img,roi_img, Mat(), Point(-1, -1), 3); 31 32 Mat roi2 = bg(Rect(faces[i].x, faces[i].y, roi_img.cols, roi_img.rows)); 33 roi_img.copyTo(roi2, roi_img); 34 } 35 imshow("roi", roi_img); 36 imshow("bg", bg); 37 imshow("original", original); 38 39 waitKey(30); 40 } 41 destroyAllWindows(); 42 return 0; 43}

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

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

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

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

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

fana

2022/12/01 06:23 編集

> 元の動画に張り付けることが出来ません 「元の動画に張り付ける」とは具体的にどういう意味ですか? コードを見た感じでは,bg には「モザイクをかけた」状態が反映されていそうにも見えますが,実装にはそうなっていない,というような意味でしょうか?
fana

2022/12/01 06:23 編集

あと,コードを示す場合,主題に関わらない部分は雑音となり得るので,現象が再現する必要最低限の状態を作って示すと良いかと思います. 例えば,常に3フレーム1組で取得するような処理は不思議に思えるし,そのうち1個しかempty()の判定をしないこと等も何か気になってしまう. 他にも wimageは不要に思えるし,resizeも意味がないのでは?とか何とか etc etc... それらが質問で扱おうとする主題と関係ないのであれば,質問する際には取っ払った方が良い. やりたいことが「画像のある一部を切り出して,それにモザイクをかけ,その結果を元々の画像の該当部分に反映させたい」で合っているなら,キャプチャ処理や検出器すらも不要.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問