Доминирующее видео анализа RGB

#python #opencv #for-loop #rgb #video-processing

#python #opencv #для цикла #rgb #обработка видео

Вопрос:

Я пытаюсь найти наиболее доминирующий цвет RGB в каждом кадре видео (сделанного с помощью piCamera) и сохранить это в формате csv (или matrix, все, что я могу использовать вне цикла for). Но каждый раз, когда я выхожу из цикла for, сохраняются только данные RGB последнего кадра. Я пробовал: с open(«filename.csv», ‘w’) как f: но я получил пустой файл; и export.to_csv сохранил только последнее значение rgb. Кто-нибудь знает, как это сделать? Заранее спасибо!

»’

 while True:
        
        _, frame = cap.read()
        

        #Check whether there are still frames to analyze
        if frame is not None:
            RGB = frame
            # Display the resulting frame
            shape = frame.shape
            RGBS = RGB.reshape((shape[0]*shape[1],3))

            num_clusters = 1
            clusters = KMeans(n_clusters=num_clusters)
            clusters.fit(RGBS)
                
            # count the dominant colors and put them in "buckets"
            histogram = make_histogram(clusters)
            # then sort them, most-common first
            combined = zip(histogram, clusters.cluster_centers_)
            combined2 = sorted(values, key=lambda x: x[0], reverse=True)

            # finally, we'll output a graphic showing the colors in order
            bars = []
            hsv_values=[]
            rgb_values = []
            for index, rows in enumerate(combined2):
                bar, rgb, hsv = make_bar(100, 100, rows[1])
                #print(rgb)
                #rgb_values.append(rgb)
                #hsv_values.append(hsv)
                #bars.append(bar)
      
            key = cv2.waitKey(1)
            if key == 27:
                break
        # End the loop if there is no more frame to analyse     
        else:
            break
 

»’

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

1. Что произойдет, если вы переместите bars = [] , hsv_values=[] , rgb_values = [] все, которые будут объявлены перед циклом While? Мне кажется bars = [] , что этот массив будет сбрасываться при каждом запуске цикла While.

2. к сожалению, это все еще не работает. Я все еще получаю пустой csv-файл, когда помещаю это после кода: data = pd.DataFrame(rgb_values) export_csv = data.to_csv (f'{filename}_rough.csv’, index = None, header=True)

3. Ах, неважно, я допустил ошибку типа, она работает отлично!! Спасибо!!