如何解决 OpenCV 中出现的“NameError: name 'frame' is not defined”错误?

Posted

技术标签:

【中文标题】如何解决 OpenCV 中出现的“NameError: name \'frame\' is not defined”错误?【英文标题】:How to solve the "NameError: name 'frame' is not defined" error occured in OpenCV?如何解决 OpenCV 中出现的“NameError: name 'frame' is not defined”错误? 【发布时间】:2021-11-18 14:37:30 【问题描述】:
import imgaug.augmenters as iaa
import cv2
import glob
from tkinter import Frame
from tkinter import Text
from tkinter import Label

# 1. Load Dataset
images = []
images_path = glob.glob("images/*.jpg")
for img_path in images_path:
    img = cv2.imread(img_path)
    images.append(img)
# 2. Image Augmentation
augmentation = iaa.Sequential([
    # 1. Flip
    iaa.Fliplr(0.5),
    iaa.Flipud(0.5),
    # 2. Affine
    iaa.Affine(translate_percent="x": (-0.2, 0.2), "y": (-0.2, 0.2),
               rotate=(-30, 30),
               scale=(0.5, 1.5)),
    # 3. Multiply
    iaa.Multiply((0.8, 1.2)),
    # 4. Linearcontrast
    iaa.LinearContrast((0.6, 1.4)),
    # Perform methods below only sometimes
    iaa.Sometimes(0.5,
        # 5. GaussianBlur
        iaa.GaussianBlur((0.0, 3.0))
        )
])


 # 3. Show Images
counter = 0
while True:
    augmented_images = augmentation(images=images)
    for img in augmented_images:
        counter += 1
        cv2.imwrite(str(counter) + ".jpg", frame)

        cv2.imwrite('Desktop/images/dog.jpg', img)  # desired save location
        cv2.waitKey(0)

"Traceback(最近一次调用最后一次): 文件“C:/Users/MC/PycharmProjects/pythonProject/Python_Augmentation.py”,第 48 行,在 cv2.imwrite(str(计数器)+“.jpg”,帧) NameError: name 'frame' is not defined"

图像增强代码运行良好,但是当我尝试保存增强图像时出现此错误。我也使用了大写的“F”而不是“f”(框架),但又出现了一个错误。

"Traceback(最近一次调用最后一次): 文件“C:/Users/MC/PycharmProjects/pythonProject/Python_Augmentation.py”,第 49 行,在 cv2.imwrite(str(计数器)+“.jpg”,帧) cv2.error: OpenCV(4.5.4-dev) :-1: error: (-5:Bad argument) in function 'imwrite'

重载解析失败:

img 不是 numpy 数组,也不是标量 参数“img”的预期 Ptr<:umat>"

任何类型的帮助都是值得赞赏的。提前致谢。

【问题讨论】:

我看不到您在哪里定义了 frame 变量。此错误是因为未声明该变量名。也许您想将所有内容放在另一个 for 循环中,例如 for frame in img 感谢您的评论。我是 python 编程的新手。请您提一下我需要在哪里添加“img 中的框架”? 请看我贴的答案。 【参考方案1】:

导入是: 从 tkinter 导入 框架

但您在第 48 行使用:frame(较低的 'f')。

【讨论】:

通过将 Python 类对象 传递给旨在将图像保存 到磁盘的函数,您究竟希望实现什么? 其实我在学习python和OpenCV。我想保存增强的图像并将它们单独用于其他目的。

以上是关于如何解决 OpenCV 中出现的“NameError: name 'frame' is not defined”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Opencv 和 GTKmm 之间的冲突?

如何解决 OpenCv 绘制轮廓错误

opencv vs工程复制到另外一个文件夹出现bug的解决方法

opencv 图片旋转截断问题解决方法

opencv 图片旋转截断问题解决方法

番外4. Python OpenCV 中鼠标事件相关处理与常见问题解决方案