使用阈值图像更改实际图像中的亮度值

时间:2019-03-19 16:36:28

标签: python python-3.x image numpy opencv

我要做什么:

  1. 拍摄图像
  2. 对图像应用高斯滤镜
  3. 基于OpenCv equaliseHist函数均衡图像
  4. 从均衡图像中获取阈值图像:

如果阈值图像中的像素等于黑色,则在实际图像中减小该像素的亮度,如果阈值图像中的其白色增大实际图像中的亮度

以下是我目前拥有的代码:

img = cv2.imread('1.bmp')


img = cv2.GaussianBlur(img,(5,5),0)

""" Take the image and slipt it into the HSV colour spectrem """

h,s,v= cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))

""" Equalise the histogram for the V value """

eq_V = cv2.equalizeHist(v)

""" Merge all the values back into one image """

eq_image = cv2.cvtColor(cv2.merge([h, s, eq_V]), cv2.COLOR_HSV2BGR)

ret1,th1 = cv2.threshold(eq_image,127,255,cv2.THRESH_BINARY)


[rows, columns, channels] = img.shape

blacks = np.zeros((rows,columns,channels))
whites = np.zeros((rows,columns,channels))



for row in range(rows):
    for column in range(columns):
        if th1[row,column].all() == 0:
            """ Equalise the v value """
            blacks[row,column] = v[row,column]

        else:
            """ Equalise the v value """
            whites[row,column] = v[row,column]


addTogether = cv2.add(blacks,whites)


cv2.imshow("frame", addTogether.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()

我的问题

我正在努力的部分是上面提到的步骤4。我目前正在基于黑白和黑白构建图像,然后将这些图像加在一起以回到原始图像状态。

我似乎无法做/想出的是如何调整图像的hsv的v值,然后如何将整个图像与新的v值一起合并回色调和饱和度值。< / p>

最近一次尝试的图像

enter image description here

0 个答案:

没有答案