python - 使用阈值图像改变实际图像中的亮度值
问题描述
我正在尝试做的事情:
- 拍照
- 对图像应用高斯滤波器
- 基于 OpenCv equaliseHist 函数对图像进行均衡化
- 从均衡图像中获取阈值图像:
如果阈值图像中的像素等于黑色,则在实际图像中降低该像素的亮度,如果阈值图像中的白色增加实际图像中的亮度
以下是我目前拥有的代码:
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 值以及色调和饱和度值合并在一起。
最新尝试的图像
解决方案
推荐阅读
- java - 处理最新的查询响应 Android
- c++ - 使用 CMake/VS2019 从柯南链接 spdlog 时库编译时间设置不匹配?
- android - 如何将 circleimageview 保持在 CardView 之前?在约束布局?
- go - 转到树结构
- css - VueJS向复杂样式类添加变量
- ruby-on-rails - mysql gem 安装失败
- angular - 有没有什么方法可以在没有 identityserver4 的情况下实现隐式流,而只是使用 .net core 5?
- yarnpkg - yarn 工作空间如何处理不同版本的外部依赖?
- javascript - HTML Webpack 插件