Как установить значение V-канала цветового пространства HSV на постоянное значение

#python #numpy #opencv #image-processing #color-space

#python #numpy #opencv #обработка изображений #цветовое пространство

Вопрос:

Я работаю над проблемой обнаружения объектов, когда мне нужно обнаруживать маленькие цветные автомобили. Я использовал цвет в качестве основного представления целевого объекта и применил гистограмму back_projection.

Однако, как вы знаете, трудно поддерживать согласованность цветов, поскольку цвета отличаются высокой освещенностью. Однако, если бы я мог измерить, как изменяется яркость, я мог бы контролировать цвет цвета.

Поэтому я преобразовал видеокадр в 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?

Заранее спасибо

Ответ №1:

Вы можете установить значение канала на некоторую константу в Python / OpenCV следующим образом, используя синтаксис numpy

 v[:,:] = 172
  

Это устанавливает каждое значение оттенков серого x, y в изображении равным 172.

Комментарии:

1. Или hsv[:, :, 2] = 172 без разделения

2. @fmw42 Спасибо, мистер Вайнхаус