#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. Ах, неважно, я допустил ошибку типа, она работает отлично!! Спасибо!!