91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2023-12-18
  • 語言: C/C++
  • 標簽: 膚色檢測??

資源簡介

利用OpenCV實現了基于YCbCr、混合高斯以及YCbCg膚色檢測,同時其中YCbCr、混合高斯給出兩種不同方式(直接和間接)讀取圖像數據的實現。

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“SubFun.h“

//YCbCr?橢圓膚色分割1
void?EllipseSkinSegment1(Mat?ColorIm?Mat&?SkinBW)
{
int?m?=?ColorIm.rows;
int?n?=?ColorIm.cols;
SkinBW?=?Mat::zeros(m?n?CV_8UC1);

Mat?YCbCr?Y?Cr?Cb;
vector?channels;
cvtColor(ColorIm?YCbCr?CV_BGR2YCrCb);//必須要用CV_BGR2YCrCb,不能用CV_RGB2YCrCb
split(YCbCr?channels);
Y?=?channels.at(0);
Cr?=?channels.at(1);
Cb?=?channels.at(2);

Y.convertTo(Y?CV_32FC1);
Cr.convertTo(Cr?CV_32FC1);
Cb.convertTo(Cb?CV_32FC1);

float?Cx?=?109.38?Cy?=?152.02;
float?Ecx?=?1.60?Ecy?=?2.41;
float?a?=?25.39?b?=?14.03;
float?Theta?=?2.53;

Mat?RotateM?=?(Mat_(2?2)?<<
cos(Theta)?sin(Theta)?-sin(Theta)?cos(Theta));
Mat?Diff?=?Mat::zeros(2?1?CV_32FC1);;
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
Diff.at(0?0)?=?Cb.at(i?j)?-?Cx;
Diff.at(1?0)?=?Cr.at(i?j)?-?Cy;
Mat?RotateVal?=?RotateM*Diff;
float?x?=?RotateVal.at(0?0);
float?y?=?RotateVal.at(1?0);
float?EllipseV?=?pow((x?-?Ecx)?2.0)?/?(a*a)?+?pow((y?-?Ecy)?2.0)?/?(b*b);
if?(EllipseV?<=?1)
{
SkinBW.at(i?j)?=?255;
}
if?(Y.at(i?j)? {
SkinBW.at(i?j)?=?0;
}
}
}
//imshow(“原始膚色區域“?SkinBW);
//形態學開操作,去掉小的噪點區域
int?KnelW?=?5;
morphologyEx(SkinBW?SkinBW?MORPH_OPEN?Mat(KnelW?KnelW?CV_8U)?Point(-1?-1)?1);
}



//YCbCr?橢圓膚色分割2
void?EllipseSkinSegment2(Mat?ColorIm?Mat&?SkinBW)
{
int?m?=?ColorIm.rows;
int?n?=?ColorIm.cols;
SkinBW?=?Mat::zeros(m?n?CV_8UC1);

Mat?YCbCr?Y?Cr?Cb;
vector?channels;
cvtColor(ColorIm?YCbCr?CV_BGR2YCrCb);//必須要用CV_BGR2YCrCb,不能用CV_RGB2YCrCb
split(YCbCr?channels);
Y?=?channels.at(0);
Cr?=?channels.at(1);
Cb?=?channels.at(2);

Y.convertTo(Y?CV_32FC1);
Cr.convertTo(Cr?CV_32FC1);
Cb.convertTo(Cb?CV_32FC1);

float?Cx?=?109.38?Cy?=?152.02;
float?Ecx?=?1.60?Ecy?=?2.41;
float?a?=?25.39?b?=?14.03;
float?Theta?=?2.53;

Mat?RotateM?=?(Mat_(2?2)?<<
cos(Theta)?sin(Theta)?-sin(Theta)?cos(Theta));
Mat?Diff?=?Mat::zeros(2?1?CV_32FC1);;
for?(int?i?=?0;?i? {
float*?YRow?=?Y.ptr(i);
float*?CbRow?=?Cb.ptr(i);
float*?CrRow?=?Cr.ptr(i);
uchar*?SkinBWRow?=?SkinBW.ptr(i);
for?(int?j?=?0;?j? {
Diff.at(0?0)?=?CbRow[j]?-?Cx;
Diff.at(1?0)?=?CrRow[j]?-?Cy;
Mat?RotateVal?=?RotateM*Diff;
float?x?=?RotateVal.at(0?0);
float?y?=?RotateVal.at(1?0);
float?EllipseV?=?pow((x?-?Ecx)?2.0)?/?(a*a)?+?pow((y?-?Ecy)?2.0)?/?(b*b);
if?(EllipseV?<=?1)
{
SkinBWRow[j]?=?255;
}
if?(YRow[j]? {
SkinBWRow[j]?=?0;
}
}
}
//imshow(“原始膚色區域“?SkinBW);
//形態學開操作,去掉小的噪點區域
int?KnelW?=?5;
morphologyEx(SkinBW?SkinBW?MORPH_OPEN?Mat(KnelW?KnelW?CV_8U)?Point(-1?-1)?1);
}




//混合高斯膚色分割
void?MixGaus

評論

共有 條評論