opencv漫水填充肤色掩码进行颜色识别cvCalcBackProgect

我们可以用函数cvCalcBackProject计算一个像素是否是一个已知目标的一部分,也可以用函数cvCalcBackProjectPatch计算一块区域是否包含已知的目标。函数cvCalcBackProjectPatch在整个输入图像使用一个滑动窗口。在输入图像矩阵的每一个位置,块中所有的像素点都被设置为在目标图像中对应的块中心位置的像素点。这一点非常重要,因为图像的许多特性(如纹理)在单一的像素级别上无法确定,但可以从一组像素确定。cvCalcBackProjectPatch有两种用法:但采样窗口小于
摘要由CSDN通过智能技术生成

第一:反向投影

反向投影(back projection)是一种记录像素点(为cvCalcBackProjection)或像素块(为cvCalcBackProjecitPatch)如何适应直方图模型中分布的方式。


函数原型:void cvCalcBackProject(IplImage**  image, CvArr*  back_project, const  CvHistogram*  hist);

image:与输入图像的大小一样,而且也是单通道,8位或浮点图像。

back_project:设置为hist中的相关bin的值。如果直方图是归一化的,此值便与一个条件概率值相关(即图像中像素点为直方图hist所表征的某种成员的概率)。


第二:基于块的反向投影

我们可以用函数cvCalcBackProject计算一个像素是否是一个已知目标的一部分,也可以用函数cvCalcBackProjectPatch计算一块区域是否包含已知的目标。函数cvCalcBackProjectPatch在整个输入图像使用一个滑动窗口。在输入图像矩阵的每一个位置,块中所有的像素点都被设置为在目标图像中对应的块中心位置的像素点。这一点非常重要,因为图像的许多特性(如纹理)在单一的像素级别上无法确定,但可以从一组像素确定。cvCalcBackProjectPatch有两种用法:但采样窗口小于目标时,作为一个区域检测器,当采样窗口和目标一般大时,作为目标检测器。


函数原型:void cvCalcBackProjectPatch(IplImage**  images, CvArr*  dst, CvSize  patch_size, CvHistogram* hist, int method, float  factor);

images:源图像

dst:目标图像,单通道浮点型图像。

patch_size:目标大小为:images[0][0].width-patch_size.x+1,images[0][0].height-patch_size.y+1。

factor:归一化水平


代码:

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <opencv2/legacy/legacy.hpp>
using namespace cv;
using nam

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值