2016-03-03 123 views
2

我有一个背景图像和前景图像。 他们的观点是平等的。 但阴影不同。 我要提取腿部轮廓。从背景提取前景

我应用了背景差异,但效果不佳。 请别人告诉我好方法。 你可以看到下面的图片。

谢谢。

+0

的可能的复制[CV - 提取的两个图像之间的差异(http://stackoverflow.com/questions/27035672/cv-extract-differences -between-two-images) – Miki

回答

1

如果您只想提取腿部图像,然后基于HSV的皮肤检测,然后重复扩张应该产生更好的结果。下面 见代码:

#include<iostream> 
#include<opencv2/core/core.hpp> 
#include<opencv2/imgproc/imgproc.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include<stdio.h> 
using namespace std; 
using namespace cv; 

int main() 

{ 

Mat b=imread("b2.png");//back 
Mat f=imread("f2.png");//fore 
Mat hsv_th; 
cvtColor(b,b,CV_BGR2HSV); 
cvtColor(f,f,CV_BGR2HSV); 

inRange(f,Scalar(0,100,0),Scalar(100,255,100),hsv_th); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 


for(;;) 
{ 
    imshow("fore",f); 
    imshow("hsv",hsv_th); 

char c=waitKey(10); 
if(c=='b')//break when 'b' is pressed 
     { 
     break; 
     } 
} 
return 0; 
} 

输出图像: result

+0

OP正在处理静止图像。您无法计算平均背景。 – Miki

+0

对不起。我编辑了我的回答 –

+0

您可以改进提供显示结果的代码的答案; D – Miki