情况: 我正在尝试找出视频帧之间的差异。我有 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")
错误:
直到第二个 for 循环的所有内容都有效,但 pic 数组存在问题。由于文件未排序,因此数组也未排序。什么是按升序对这些文件进行排序的简单方法。
当我尝试使用 opencv 模块读取图像时,它总是抛出错误
File "frame.py", line 20, in <module> img1 = cv2.IMREAD_GRAYSCALE("%s",pic[(counter - 1)]) TypeError: 'int' object is not callable
我正在尝试遍历文件并比较它们之间的差异。我的 for 循环有什么问题或什么是解决此问题的更好方法?
我在 Linux 上使用 Python 3.6.9(默认,2020 年 7 月 17 日,12:50:27)[GCC 8.4.0]。
慕的地8271018
相关分类