Python 如何将HSV颜色空间的V通道值设置为常量值

Python 如何将HSV颜色空间的V通道值设置为常量值,python,numpy,opencv,image-processing,color-space,Python,Numpy,Opencv,Image Processing,Color Space,我正在研究一个物体检测问题,我必须检测小型彩色汽车。我使用颜色作为目标对象的主要特征表示,并应用直方图反投影 但是,正如您所知,很难保持颜色的一致性,因为颜色的照度变化很大。然而,如果我能测量亮度的变化,我就能控制颜色的变化 因此,我将视频帧转换为HSV,因为V通道代表图像的亮度,所以我使用以下代码计算该通道的最小/最大平均值: import numpy as np import cv2 as cv from matplotlib import pyplot as plt cap=cv.Vid

我正在研究一个物体检测问题,我必须检测小型彩色汽车。我使用颜色作为目标对象的主要特征表示,并应用直方图反投影

但是,正如您所知,很难保持颜色的一致性,因为颜色的照度变化很大。然而,如果我能测量亮度的变化,我就能控制颜色的变化

因此,我将视频帧转换为HSV,因为V通道代表图像的亮度,所以我使用以下代码计算该通道的最小/最大平均值:

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

cap=cv.VideoCapture(r'C:/Users/kjbaili/Docum_changes.mp4')

Mean_list=[]
while cap.isOpened:
    ret,frame=cap.read()
    if ret!=True:
        print("cant open Video, please check your source")
        break
    else:
    




     HSV=cv.cvtColor(frame.copy(),cv.COLOR_BGR2HSV)

     h,s,v=cv.split(HSV)
 
 
 
     cv.imshow('HSV_image',HSV)
     MEAN_V=v.mean()
     Mean_list.append(MEAN_V)   
 

     print('mean_V',MEAN_V)
     cv.waitKey(1)
print('Minimum_ lightness  ', min(Mean_list))
print('Maximum_lightness   ',max( Mean_list))
cv.destroyAllWindows()
结果是

Minimum_ lightness   137.57618546786645
Maximum_lightness    172.9926900112821
因此,通过观察视频,V通道的值从172-->137下降。因此,如果我将V通道的值设置为始终172,则视频中的颜色理论上是相同的

所以我的问题是: 如果可能,我如何将V通道的值设置为常量=172


提前感谢

您可以使用numpy语法在Python/OpenCV中将通道的值设置为某个常量,如下所示

v[:,:] = 172


将图像中的每个x,y灰度值设置为172。

hsv[:,:,2]=172splitting@fmw42谢谢你,韦恩豪斯先生