Изображения в обеих папках имеют одинаковый стандарт (jpeg с одинаковым разрешением)
Был написан код (не ругайте строго за стиль, я только начинаю постигать python)
frames_path = "E:/My_prog/frames/" analysis_path = "E:/My_prog/analysis/" for frame_file in os.listdir(frames_path): #перебираем файлы фреймов difference = 2 proper_image = "" frame = cv2.imread(frame_file, 0) #читаем фрейм frame_hist = cv2.calcHist([frame], [0], None, [256], [0, 256]) #строим гистограмму for thumb_file in os.listdir(analysis_path): #перебираем файлы для анализа thumb = cv2.imread(thumb_file, 0) #читаем файл для анализа img = Image.open("%s%s"%(analysis_path, thumb_file)) img.show() thumb_hist = cv2.calcHist([thumb], [0], None, [256], [0, 256]) plt.imshow(thumb) plt.show() img_hist_diff = cv2.compareHist(frame_hist, thumb_hist, cv2.HISTCMP_BHATTACHARYYA) img_template_probability_match = cv2.matchTemplate(frame_hist, thumb_hist, cv2.TM_CCOEFF_NORMED)[0][0] img_template_diff = 1 - img_template_probability_match commutative_image_diff = img_hist_diff + (img_template_diff/10) if difference>commutative_image_diff: difference = commutative_image_diff proper_image = thumb_file print (frame_file) print (proper_image) print (difference)
Следующие строки были добавлены исключительно для собственного понимания почему код без них всегда даёт нулевую гистограмму thumb_file и будет стёрт после исправления ошибки
plt.imshow(thumb) plt.show()
При попытке исполнения кода получаю
—————————————————————————
TypeError Traceback (most recent call last)
<ipython-input-159-367fb0418268> in <module>
18 thumb_hist = cv2.calcHist(, , None, , )
19 # print (thumb_file)
—> 20 plt.imshow(thumb)
21 plt.show()
22 # print (thumb_hist)
………………………………….
TypeError: Image data of dtype object cannot be converted to float
Поиски в сети натолкнули на мысль, что ошибка возникает так как не выполняется строчка
thumb = cv2.imread(thumb_file, 0)
Вместе с тем, часть кода
img = Image.open("%s%s"%(analysis_path, thumb_file)) img.show()
Хочу также заметить, что
frame = cv2.imread(frame_file, 0) #читаем фрейм frame_hist = cv2.calcHist([frame], [0], None, [256], [0, 256]) #строим гистограмму
Подскажите пожалуйста, в чём может быть причина такой ошибки и как её исправить
Заранее благодарен