OpenCv皮肤检测-HSV分离
HSV皮肤检测
// 进行肤色检测
void SkinDetect(IplImage* src, IplImage* dst)
{
// 创建图像头
IplImage* hsv = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );//用于存图像的一个中间变量,是用来分通道用的,分成hsv通道
IplImage* tmpH1 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );//通道的中间变量,用于肤色检测的中间变量
IplImage* tmpS1 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* tmpH2 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* tmpS3 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* tmpH3 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* tmpS2 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* H = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* S = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, );
IplImage* V = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, ); IplImage* src_tmp1 = cvCreateImage(cvGetSize(src), , ); // 高斯模糊
cvSmooth(src, src_tmp1, CV_GAUSSIAN, , ); //高斯模糊 // hue色度,saturation饱和度,value纯度
cvCvtColor(src_tmp1, hsv, CV_BGR2HSV);//颜色转换
cvSplit(hsv, H, S, V, );//分为3个通道 cvInRangeS(H, cvScalar(0.0, 0.0, , ), cvScalar(20.0, 0.0, , ), tmpH1);
cvInRangeS(S, cvScalar(75.0, 0.0, , ), cvScalar(200.0, 0.0, , ), tmpS1);
cvAnd(tmpH1, tmpS1, tmpH1, ); // Red Hue with Low Saturation
// Hue 0 to 26 degree and Sat 20 to 90
cvInRangeS(H, cvScalar(0.0, 0.0, , ), cvScalar(13.0, 0.0, , ), tmpH2);
cvInRangeS(S, cvScalar(20.0, 0.0, , ), cvScalar(90.0, 0.0, , ), tmpS2);
cvAnd(tmpH2, tmpS2, tmpH2, ); // Red Hue to Pink with Low Saturation
// Hue 340 to 360 degree and Sat 15 to 90
cvInRangeS(H, cvScalar(170.0, 0.0, , ), cvScalar(180.0, 0.0, , ), tmpH3);
cvInRangeS(S, cvScalar(15.0, 0.0, , ), cvScalar(., 0.0, , ), tmpS3);
cvAnd(tmpH3, tmpS3, tmpH3, ); // Combine the Hue and Sat detections
cvOr(tmpH3, tmpH2, tmpH2, );
cvOr(tmpH1, tmpH2, tmpH1, ); cvCopy(tmpH1, dst); cvReleaseImage(&hsv);
cvReleaseImage(&tmpH1);
cvReleaseImage(&tmpS1);
cvReleaseImage(&tmpH2);
cvReleaseImage(&tmpS2);
cvReleaseImage(&tmpH3);
cvReleaseImage(&tmpS3);
cvReleaseImage(&H);
cvReleaseImage(&S);
cvReleaseImage(&V);
cvReleaseImage(&src_tmp1);
} int main(int argc, char* argv[])
{
/*
IplImage *src = cvLoadImage("C:\\C_C++ code\\Photo and video\\text009.jpg", CV_LOAD_IMAGE_COLOR);
//
cvNamedWindow("src", CV_WINDOW_AUTOSIZE);
cvShowImage("src", src);
// cvNamedWindow("flip", CV_WINDOW_AUTOSIZE);
IplImage *dsc = cvCreateImage(cvGetSize(src), src->depth, 1); // 以x轴翻转
SkinDetect(src, dsc);
// cvFlip(src, dsc, 1);
cvShowImage("flip", dsc);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&src);
printf("Hello World!\n"); */
VideoCapture video();
IplImage *src, *dst;
Mat img,bigimg;
double scalar = ;
video >> img;
src = &(IplImage(img));
dst = cvCreateImage(cvGetSize(src), , );
while ()
{
video >> img;
src = &(IplImage(img));
SkinDetect(src, dst);
img = cvarrToMat(dst);
//腐蚀与膨胀 erode(img, img, Mat());
erode(img, img, Mat());
//erode(img, img, Mat()); dilate(img, img, Mat());
dilate(img, img, Mat());
dilate(img, img, Mat()); dilate(img, img, Mat());
dilate(img, img, Mat());
resize(img, bigimg, Size(img.cols*scalar, img.rows*scalar), , , );
imshow("x", bigimg);
if (waitKey() > )
break;
}
waitKey();
return ;
}
OpenCv皮肤检测-HSV分离的更多相关文章
- OpenCV探索之路(二十七):皮肤检测技术
好久没写博客了,因为最近都忙着赶项目和打比赛==| 好吧,今天我打算写一篇关于使用opencv做皮肤检测的技术总结.那首先列一些现在主流的皮肤检测的方法都有哪些: RGB color space Yc ...
- OpenCV颜色转换和皮肤检测
本笔记重点记录OpenCV中的颜色转换和利用色彩空间的特性进行皮肤检测 颜色转换 实现原理 之所以要引入色调/饱和度/亮度的色彩空间概念,是因为人们喜欢凭直觉分辨各种颜色,而它与这种方式吻合.实际上, ...
- OpenCV——肤色检测
一.RGB color space 检测代码如下: void SkinRGB(IplImage* src,IplImage* dst) { //RGB颜色空间 //均匀照明:R>95,G> ...
- keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)
引自:http://blog.csdn.net/sinat_26917383/article/details/72885715 人脸识别热门,表情识别更加.但是表情识别很难,因为人脸的微表情很多,本节 ...
- opencv直线检测在c#、Android和ios下的实现方法
opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...
- OPENCV条形码检测与识别
条形码是当前超市和部分工厂使用比较普遍的物品,产品标识技术,使用摄像头检测一张图片的条形码包含有两个步骤,第一是定位条形码的位置,定位之后剪切出条形码,并且识别出条形码对应的字符串,然后就可以调用网络 ...
- OpenCV矩形检测
OpenCV矩形检测 需求:提取图像中的矩形,图像存在污染现象,即矩形区域不是完全规则的矩形. 思路一:轮廓法 OpenCV里提取目标轮廓的函数是findContours,它的输入图像是一幅二值图像, ...
- OpenCV绘制检测结果
OpenCV绘制检测结果 opencv rtcp timestamp 一.介绍 由于在验证阶段,使用FPGA时我们的算法检测速度很慢,没法直接在主流上进行绘图,否则的话,主流就要等待算法很久才能 ...
- Opencv SkinOtsu皮肤检测
void SkinRGB(IplImage* rgb, IplImage* _dst) { assert(rgb->nChannels == && _dst->nChann ...
随机推荐
- CSS3自适配手机屏幕
@media only screen and (max-width:350px){ .img{ width: 80px; height:70px; background-image: url(./im ...
- e_msg_c_as_login_req 和 e_msg_c_as_login_if_no_register_req
e_msg_c_as_login_req e_msg_c_as_login_if_no_register_req 这两条协议差不多 第一个就是纯粹的登录,验证密码 第二个游戏中游客模式,直接登录的模式 ...
- hdu 4006 The kth great number(优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 题目大意: 第一行 输入 n k,后有 n 行,对于每一行有两种状态 ,①“I x” : 插入 ...
- Envelope Letter
http://www.thefullwiki.org/More_C%2B%2B_Idioms/Envelope_Letter http://www.smallmemory.com/almanac/Co ...
- angularjs学习笔记—工具方法
angular.bind(self, fn, args) 作用:返回一个新的函数,绑定这个函数的this指向self 参数: self:新函数的上下文对象 fn:需要绑定的函数 args:传递给函数的 ...
- JabRef 文献管理软件
JabRef 文献管理软件简明教程 大多只有使用LaTeX撰写科技论文的研究人员才能完全领略到JabRef的妙不可言,但随着对Word写作平台上BibTeX4Word插件的开发和便利应用,使用Word ...
- winform的扩展的带有截图功能picturebox
using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using Sys ...
- CallerInformation
http://www.cnblogs.com/henryzhu/archive/2013/01/27/csharp-5-new-callerinformation.html 去年8月,Visual S ...
- owin中间件
public class HelloWorldOptions { public HelloWorldOptions() { IncludeTimestamp = true; Name = " ...
- apache struts 2 任意代码执行漏洞
漏洞检测地址:http://0day.websaas.cn 漏洞利用工具,如下: 漏洞利用,如下: step1 step2 step3 提权思路,如下: 1.开启虚拟终端,执行命令,但是,提示“连接被 ...