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 row
、column
、th
和 mag
的值。
不知道对不对
我必须假设它超出了你的问题范围......
我正在处理 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 row
、column
、th
和 mag
的值。
不知道对不对
我必须假设它超出了你的问题范围......