【问题标题】:Python code Error "name 'screenCnt' is not defined"Python代码错误“未定义名称'screenCnt'”
【发布时间】:2020-05-18 23:27:23
【问题描述】:

我是 python 新手,我创建了 anaconda 环境并运行给定的代码,但它显示错误

   for c in cnts:
        # approximate the contour
        peri = cv2.arcLength(c, True)
        approx = cv2.approxPolyDP(c, 0.02 * peri, True)

        # our approximated contour should have four points
        if len(approx) == 4:
            screenCnt = approx
            break

# show the contour (outline) of the piece of paper
#print("STEP 2: Find contours of paper")
    cv2.drawContours(orig, [screenCnt], -1, (0, 255, 0), 2)

#     apply the four point transform to obtain a top-down
#     view of the original image
    warped = four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)

错误是

NameError Traceback(最近调用 最后)在 122#显示一张纸的轮廓(轮廓) 123 #print("第 2 步:查找纸的轮廓") --> 124 cv2.drawContours(orig, [screenCnt], -1, (0, 255, 0), 2) 125 126 # 应用四点变换以获得自顶向下

NameError:名称“screenCnt”未定义

但在代码中我已经定义了 screenCnt。最初,此代码运行正常,但现在无法正常工作或在每次交替执行后显示错误。 (它第一次运行正常,重新启动内核时出现同样的错误)。

或者如果我设置 screenCnt = 0 或 screenCnt = None 它给出错误

错误回溯(最近的调用 最后)在 123#显示一张纸的轮廓(轮廓) 124 #print("第 2 步:查找纸的轮廓") --> 125 cv2.drawContours(orig, [screenCnt], -1, (0, 255, 0), 2) 126 127 # 应用四点变换以获得自顶向下

错误:OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\drawing.cpp:2509: 错误:(-215:断言失败)npoints > 0 in function 'cv::drawContours'

【问题讨论】:

    标签: python python-3.x opencv jupyter-notebook anaconda


    【解决方案1】:

    查看您的代码,可能语句screenCnt = approx 在执行期间从未被命中。尝试将screenCnt 初始化为某个默认值。

    【讨论】:

    • 如果我在循环之外设置 screenCnt = 0 它会给出这个错误。 OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\drawing.cpp:2509: 错误: (-215:Assertion failed) npoints > 0 in function 'cv::drawContours'
    • 在您的情况下,我认为“0”不是一个好的默认值。尝试使用以下 if-else 条件。 ``` # 将 screeCnt 初始化为 None screenCnt = None ....code if screen_cnt is None: # 当 screenCnt 在这里没有定义时执行任何需要的操作 sys.exit(0) ```
    • 给出更多说明。
    【解决方案2】:

    看起来第 81 行和第 83 行中的 screenCnt 变量不一样。或者您正在尝试访问在 if 语句范围内本地定义的 screenCnt。

    【讨论】:

    • 不明白能不能简单解释一下。
    【解决方案3】:

    显示未定义,因为程序无法检测到图像中的 4 个确定点。尝试将纸张放在深色背景上。

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      相关资源
      最近更新 更多