擅长:python、mysql、java
<p>为了完成@banderlog013的答案,我认为<a href="https://docs.gimp.org/2.10/en/gimp-layer-white-balance.html" rel="nofollow noreferrer">Gimp Doc</a>指定首先丢弃每个通道的结束像素,然后拉伸剩余的范围。我相信正确的准则是:</p>
<pre><code>img = cv2.imread('test.jpg')
balanced_img = np.zeros_like(img) #Initialize final image
for i in range(3): #i stands for the channel index
hist, bins = np.histogram(img[..., i].ravel(), 256, (0, 256))
bmin = np.min(np.where(hist>(hist.sum()*0.0005)))
bmax = np.max(np.where(hist>(hist.sum()*0.0005)))
balanced_img[...,i] = np.clip(img[...,i], bmin, bmax)
balanced_img[...,i] = (balanced_img[...,i]-bmin) / (bmax - bmin) * 255
</code></pre>
<p>我用它效果很好,试试看!在</p>