为什么说“名称'灰色'无法定义”?

时间:2019-09-18 16:36:22

标签: python python-3.x opencv pycharm aruco

该程序是由我之前在我目前工作的公司中的合作学生编写的。该项目旨在通过向计算机网络摄像头显示不同的图像来制造智能车载套件[Kuman SM11]。换句话说,在汽车没有传感器的情况下进行自动驾驶。

他写的文件之一就是这个名为“ arucoMarkerDistanceDetection”的文件。这是一个很长的文件,所以如果我发送的代码块不足,请告诉我!

以下是发生错误的功能定义之一。在最后一行,您可以看到上方的gray.shape[::-1]gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)。为什么Pycharm仅在上面几行定义时告诉我可能未定义?

一开始我对编码非常缺乏经验,所以这一直是一个挑战。另外,尝试剖析其他人的代码是另一项任务。除此之外,我正在使用Pycharm,但我仍然不是100%熟悉。

for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # find the chess board (calibration pattern) corners
    ret, corners = cv2.findChessboardCorners(gray, (7, 6), None)

    # if calibration pattern is found, add object points,
    # image points (after refining them)
    if ret == True:
        objpoints.append(objp)

        # Refine the corners of the detected corners
        corners2 = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
        imgpoints.append(corners2)

        # Draw and display the corners
        img = cv2.drawChessboardCorners(img, (7, 6), corners2, ret)

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)

    line 100, in <module>
        ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
    cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\calib3d\src\calibration.cpp:3677: error: (-215:Assertion failed) nimages > 0 in function 'cv::calibrateCameraRO'

1 个答案:

答案 0 :(得分:0)

如果“ images”为空,则for循环将不会运行,因此变量grey可能不会初始化,并且在循环之后,u正在访问可能不存在的grey。因此,代码可能会中断。