【问题标题】:OpenCv issues in Python Resutling 'int' object is not callablePython Resutling 'int' 对象中的 OpenCv 问题不可调用
【发布时间】:2020-11-25 05:07:30
【问题描述】:

情况: 我正在尝试找出视频帧之间的差异。我有 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. 直到第二个 for 循环为止的一切都可以正常工作,但是 pic 数组存在问题。由于文件未排序,因此数组也未排序。什么是按升序对这些文件进行排序的简单方法。
  2. 当我尝试使用 opencv 模块读取图像时,它总是抛出错误
File "frame.py", line 20, in <module>
    img1 = cv2.IMREAD_GRAYSCALE("%s",pic[(counter - 1)])
TypeError: 'int' object is not callable

我正在尝试遍历文件并比较它们之间的差异。我的 for 循环有什么问题,或者有什么更好的解决方案?

我正在使用 Python 3.6.9(默认,2020 年 7 月 17 日,12:50:27) [GCC 8.4.0] 在 Linux 上。

【问题讨论】:

    标签: python python-3.x image opencv image-processing


    【解决方案1】:

    该错误告诉您cv2.IMREAD_GRAYSCALE 是一个数字。使用它的正确方法是做类似的事情

    img = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
    

    或者,在你的情况下,

    img1 = cv2.imread(pic[counter - 1], cv2.IMREAD_GRAYSCALE)
    img2 = cv2.imread(pic[counter], cv2.IMREAD_GRAYSCALE)
    

    由于您要比较相邻的图像,因此您可以通过重复使用其中一张图像来节省一半的读取(并稍微简化代码)。

    img1 = cv2.imread(pic[0], cv2.IMREAD_GRAYSCALE)
    for i in range(1, len(pic)):
        img2 = cv2.imread(pic[i], cv2.IMREAD_GRAYSCALE)
        frame.append(cv2.absDiff(img1, img2))
        img1 = img2
    
        
    

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多