首页 > 解决方案 > 使用阈值图像改变实际图像中的亮度值

问题描述

我正在尝试做的事情:

  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 值以及色调和饱和度值合并在一起。

最新尝试的图像

在此处输入图像描述

标签: pythonpython-3.ximagenumpyopencv

解决方案


推荐阅读