[英]Changing Color Space from RGB to HSV after segmentation (OpenCv Python)
[英]Change rgb image color with hsv values with OpenCV, python
我的任务是使用给定的 hsv 参数将红色矩形更改为蓝色:-0.3333、-0.05、-0.05
然后保存新图像。
我使用以下站点来演示蓝色方形变换。 HSV 到 RGB 转换所以首先我必须检查图像 hsv。 让我们说例如 1, 1, 1
要将其转换为蓝色,我必须从图像 hsv 中减去给定的参数。
h:1 - 0.3333 = 0.667,s:1 - 0.05 = 0.95,v:1 - 0.05 = 0.95
我假设首先我必须将 rbg 图像转换为 hsv,但我无法弄清楚如何使用给定参数将其转换为蓝色。
import cv2
image = cv2.imread('C:\projects\red.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imwrite('C:\projects\hsv_blue.jpg', hsv_image)
cv2.imshow('HSV image', hsv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
我感谢任何帮助。
一般来说,你应该识别红色方块,制作一个遮罩来改变像素 colors 并改变它。
下面的代码可能会有所帮助,但我使用 opencv HSV 颜色范围( H [0-180]、S [0-255]、V [0-255])。 我无法理解您的 HSV 参数范围。
import cv2
import numpy as np
#Load image
image = cv2.imread('redsquare.jpg')
image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
#Define red square area
hsv_lower_red = np.array([150,50,70])
hsv_upper_red = np.array([180,255,255])
mask = cv2.inRange(image_hsv, hsv_lower_red, hsv_upper_red)
#Change red to blue
hsv_blue_color = np.uint8([[[120,255,255 ]]])
image_hsv[mask > 0] = hsv_blue_color
#Save results to file
image = cv2.cvtColor(image_hsv, cv2.COLOR_HSV2BGR)
cv2.imwrite('bluesquare.jpg', image)
这会起作用,255 在 OpenCV 上是 100%。
image = cv2.imread('img.png')
img_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
img_hsv[:, :, 0] = (img_hsv[:, :, 0] - int(255 * 0.3333)) % 255
img_hsv[:, :, 1] = (img_hsv[:, :, 1] - int(255 * 0.05)) % 255
img_hsv[:, :, 2] = (img_hsv[:, :, 2] - int(255 * 0.05)) % 255
img_bgr = cv2.cvtColor(img_hsv, cv2.COLOR_HSV2RGB)
cv2.imwrite("modified_image.jpg", img_bgr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.