python - 错误:只有 size-1 的数组可以转换为 Python 标量
问题描述
我正在研究 numpt 矩阵,我可以创建一个 HSV 图像,然后将其转换为 RGB 图像。我创建了一个矩阵 HSV:
matrix_=np.zeros([3, H-kernel+1, W-kernel+1], dtype=np.float32)
在我用幅度、255、角度θ填充到每个值之后:
matrix_[:, row, column]=np.array([th, 255, mag])
最后我将其转换为:
cv2.cvtColor(matrix_, matrix_, cv2.COLOR_HSV2RGB)
但它抛出:“ TypeError: only size-1 arrays can be converted to Python scalars
”在 cv2.cvtColor 行。为什么?我哪里错了?
解决方案
您正在混合参数的顺序。
请参阅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_)
你最好使用返回值(语法更清晰):
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])
看起来很奇怪。
您没有发布row
、column
和th
的值mag
。
我不能说它是否正确。
我必须假设它超出了你的问题范围......
推荐阅读
- docusignapi - 我们可以从 DOCUSIGN 链接中提取信封 ID
- node.js - Facebook 客户端的对话流快速回复
- php - 致命错误:未捕获的错误:在 bool 上调用成员函数 bind_param()
- php - Laravel 模型关系 - 搜索不起作用
- delphi - 更改 TListView TObjectAppearance 中的数字格式
- reactjs - 使用 PropTypes 定义类型的选项
- c - 读取具有多个条件的数据时如何将while循环保留在函数中?
- react-native - 胜利原生胜利轴没有渲染最后一个y轴值,反应原生
- java - Quarkus Qute Double 带 2 位小数
- python - 计算python中元素组合的频率