2016-03-03 119 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