返回

错误解决:not enough values to unpack (expected 3, got 2)

人工智能

not enough values to unpack (expected 3, got 2)错误介绍

在使用OpenCV时,可能会遇到not enough values to unpack (expected 3, got 2)错误。

以下就是会产生错误的代码示例:

import cv2

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)

此代码会导致错误,因为Canny函数在OpenCV 4.0及更高版本中返回两个参数,分别是边缘图和弱边缘图。而在OpenCV 3.0及更低版本中,Canny函数返回三个参数:边缘图、弱边缘图和轮廓图。

因此,在OpenCV 4.0及更高版本中,需要修改代码如下:

import cv2

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges, weak_edges = cv2.Canny(gray, 100, 200)

解决not enough values to unpack (expected 3, got 2)错误的步骤

  1. 检查OpenCV版本。
  2. 如果使用的是OpenCV 4.0及更高版本,修改代码,将Canny函数返回的三个参数全部接收。
  3. 如果使用的是OpenCV 3.0及更低版本,修改代码,只接收Canny函数返回的前两个参数。

示例代码

以下是可以解决not enough values to unpack (expected 3, got 2)错误的代码示例:

import cv2

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# OpenCV 4.0及更高版本
edges, weak_edges = cv2.Canny(gray, 100, 200)

# OpenCV 3.0及更低版本
edges = cv2.Canny(gray, 100, 200)[0]

总结

not enough values to unpack (expected 3, got 2)错误是由于OpenCV版本导致的。在OpenCV 4.0及更高版本中,Canny函数返回两个参数,而在OpenCV 3.0及更低版本中,Canny函数返回三个参数。解决此错误的方法是根据OpenCV版本修改代码,接收正确的参数数量。