カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
最新記事
(01/30)
(01/18)
(12/16)
(12/12)
(11/25)
(11/25)
(11/24)
(11/24)
(11/22)
(11/17)
最新コメント
[12/25 日没]
[11/15 無色大師]
[11/12 無色大師]
[11/11 無色大師]
[11/08 無色大師]
リンク
新刊カレンダー
ブログ内検索
プロフィール
HN:
Nina.A
性別:
男性
趣味:
麻雀、ラノベ、漫画
自己紹介:
MJ4や天鳳等でよく麻雀やってます。もし会ったらよろしくです。
ブログは単なるメモ帳となる予定。
ブログは単なるメモ帳となる予定。
カウンタ
C/C++勉強中の大学生雑記
2025/01/31
06:29:11
2008/11/12
20:30:42
肌色検出にはYIQ表色系がいいらしいのでそれを使って肌色検出プログラムを作ってみた。しかし、私の部屋では背景も検出されてしまって使い物にならない。まあ壁の色が悪いんですが。実際の演習は、カメラ固定ではないので背景差分を使うことも出来ないし…あーでも演習の背景は風景だからこれでもいいのか…。とりあえず他の表色系での検出を併用する、輪郭情報を利用するなど何か他の方法を考えないといけないかな…。
以下、プログラム抜粋
void FreshDetect(IplImage* img, IplImage* detect_img, int max, int min){ const int maxpx(img->width*img->height); unsigned char b, g, r, i; // BGR -> YIQ // Y = 0.2990 * R + 0.5870 * G + 0.1140 * B // I = 0.5959 * R - 0.2750 * G + 0.3210 * B // Q = 0.2065 * R - 0.4969 * G - 0.2904 * B for(int a = 0; a < maxpx; ++a){ b = static_cast<unsigned char>(img->imageData[a*3+0]); g = static_cast<unsigned char>(img->imageData[a*3+1]); r = static_cast<unsigned char>(img->imageData[a*3+2]); i = static_cast<unsigned char>(0.5959*r - 0.2750*g + 0.3210*b); if( min <= i && i <= max ){ detect_img->imageData[a*3+0] = b; detect_img->imageData[a*3+1] = g; detect_img->imageData[a*3+2] = r; }else{ detect_img->imageData[a*3+0] = 0; detect_img->imageData[a*3+1] = 0; detect_img->imageData[a*3+2] = 0; } } }
PR
この記事にコメントする