如何使用OPENCV从原始图像中减去图像的“色调”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用OPENCV从原始图像中减去图像的“色调”相关的知识,希望对你有一定的参考价值。
我试图从该图像中减去图像的“色调”部分。我已经提取了所有的h,s,v组件。但我不知道下一步该做什么?它甚至可能吗?
这是我的代码
import cv2
def showimage(text,img):
cv2.imshow(text,cv2.resize(img, (700, 700)))
cv2.waitKey(0)
return 0
# Read image in BGR
img_path = "new.jpg"
img = cv2.imread(img_path)
showimage("orig",img)
# Convert BGR to HSV and parse HSV
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
showimage("hsv",hsv_img)
h, s, v = hsv_img[:, :, 0], hsv_img[:, :, 1], hsv_img[:, :, 2]
showimage("h",h)
showimage("s",s)
showimage("v",v)
sub=hsv_img-h
cv2.destroyAllWindows()
答案
你不能减去hsv_img
和h
,因为它们的尺寸不同。但是,您可以使用h
减去图像的灰度版本。为此,添加行 -
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sub = gray_img-h
showimage("sub",sub)
但是,如果您尝试使用零色调组件可视化图像,则可以使用以下代码执行此操作 -
例:
import cv2
import numpy as np
def showimage(text,img):
cv2.imshow(text,cv2.resize(img, (500,500)))
cv2.waitKey(0)
return 0
# Read image in BGR
img_path = "new.jpg"
img = cv2.imread(img_path)
showimage("orig",img)
# Convert BGR to HSV and parse HSV
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
showimage("hsv",hsv_img)
h, s, v = hsv_img[:, :, 0], hsv_img[:, :, 1], hsv_img[:, :, 2]
showimage("h",h)
showimage("s",s)
showimage("v",v)
h = np.zeros_like(h)
img2 = cv2.merge((h,s,v))
img2 = cv2.cvtColor(img2, cv2.COLOR_HSV2BGR)
showimage("With h=0 ", img2)
cv2.destroyAllWindows()
以上是关于如何使用OPENCV从原始图像中减去图像的“色调”的主要内容,如果未能解决你的问题,请参考以下文章
HDR图像处理HDR图像的色调映射 | python+opencv代码实现总结