Error: only size-1 arrays can be converted to Python scalars

Error: only size-1 arrays can be converted to Python scalars

我正在处理 numpt 矩阵,我可以创建一个 HSV 图像并将其转换为 RGB 图像。我创建了一个矩阵 HSV: matrix_=np.zeros([3, H-kernel+1, W-kernel+1], dtype=np.float32)

在我用幅度、255、角度 theta 填充每个值之后: matrix_[:, row, column]=np.array([th, 255, mag]) 最后我将其转换为: cv2.cvtColor(matrix_, matrix_, cv2.COLOR_HSV2RGB)

但它抛出:cv2.cvtColor 行中的“TypeError: only size-1 arrays can be converted to Python scalars”。为什么?我哪里错了?

您混淆了参数的顺序。

请参阅 cvtColor 的文档:

Python: cv2.cvtColor(src, code[, dst[, dstCn]]) → dst

如您所见,目标矩阵是第三个参数。
code 是第二个参数。
code 应该是标量,但您将 matrix_ 作为第二个参数传递,因此您收到错误:
"TypeError: only size-1 arrays can be converted to Python scalars"

为避免错误,您可以使用:

cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB, matrix_)

你最好使用return值(语法更清晰):

matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)

现在又出现了一个例外:"Invalid number of channels in input image"

您设置的矩阵形状错误:

而不是matrix_=np.zeros([3, H-kernel+1, W-kernel+1], dtype=np.float32),应该是:

matrix_=np.zeros([H-kernel+1, W-kernel+1, 3], dtype=np.float32)

语法 matrix_[:, row, column]=np.array([th, 255, mag]) 看起来很奇怪。
您没有 post rowcolumnthmag 的值。
不知道对不对
我必须假设它超出了你的问题范围......