2017-06-26 17 views

答えて

2

あなたは言語を指定していないので、私はPythonが説明するためにOKであると仮定します。

私がthis answerに示すアプローチを採用して、複数のチャンネルで動作するように展開している可能性があります。

enter image description here

を正規化結果:次のように

import cv2 
import numpy as np 

img = cv2.imread('shadows.png', -1) 

rgb_planes = cv2.split(img) 

result_planes = [] 
result_norm_planes = [] 
for plane in rgb_planes: 
    dilated_img = cv2.dilate(plane, np.ones((7,7), np.uint8)) 
    bg_img = cv2.medianBlur(dilated_img, 21) 
    diff_img = 255 - cv2.absdiff(plane, bg_img) 
    norm_img = cv2.normalize(diff_img, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1) 
    result_planes.append(diff_img) 
    result_norm_planes.append(norm_img) 

result = cv2.merge(result_planes) 
result_norm = cv2.merge(result_norm_planes) 

cv2.imwrite('shadows_out.png', result) 
cv2.imwrite('shadows_out_norm.png', result_norm) 

非正規化された結果の線に沿って

何かが見え

enter image description here

関連する問題