Ситуация: Я пытаюсь найти различия между кадрами моего видео. У меня есть 35000 таких рамок, и все они имеют название типа FRAMENUMBER.jpg. Они есть в каталоге, но не отсортированы. Это мой код, который я написал, чтобы найти отличия, но у меня есть несколько проблем.
import os
import cv2
import pandas as pd
frame = []
pic = []
directory = r'/home/kjo2/video'
for filename in os.listdir(directory):
if filename.endswith(".jpg"):
bob = os.path.join(filename)
pic.append(bob)
else:
continue
pd.DataFrame(pic).to_csv("boo.csv")
for counter in range(1,35000):
if counter == 35000:
img1 = cv2.IMREAD_GRAYSCALE("%s",pic[(counter - 1)])
img2 = cv2.IMREAD_GRAYSCALE("%s",pic[0])
diff = cv2.absdiff(img1, img2)
frame.append(diff)
else:
img1 = cv2.IMREAD_GRAYSCALE("%s",pic[(counter - 1)])
img2 = cv2.IMREAD_GRAYSCALE("%s",pic[counter])
diff = cv2.absdiff(img1, img2)
frame.append(diff)
pd.DataFrame(frame).to_csv("foo.csv")
Ошибки:
- Все до секунды за 1 oop работает, но есть проблема с массивом pi c. Поскольку файлы не отсортированы, массив также не отсортирован. Каким будет простой способ отсортировать эти файлы в порядке возрастания.
- Когда я пытаюсь прочитать изображение с помощью модуля opencv, он всегда выдает ошибку
File "frame.py", line 20, in <module>
img1 = cv2.IMREAD_GRAYSCALE("%s",pic[(counter - 1)])
TypeError: 'int' object is not callable
Я пытаясь перебрать файлы и сравнить различия между ними. Что не так с моим для l oop или какое лучшее решение этой проблемы?
Я использую Python 3.6.9 (по умолчанию, 17 июля 2020 г., 12:50:27) [G CC 8.4.0] на linux.