【问题标题】:Convert tuple to numpy ndarray将元组转换为 numpy ndarray
【发布时间】:2015-02-06 11:25:15
【问题描述】:

我正在开发一个在树莓派上运行的 Python 图像处理小脚本。我对变量类型有疑问。我有两个功能。第一个是将 RGB 图像转换为二进制的函数,该函数有效:

img_bw = cv2.threshold(img_filtered,127,255,cv2.THRESH_BINARY)

第二个函数让我清理小于300px的像素

img_morph = morphology.binary_opening(img_bw,ones((9,5)),iterations=2)

我尝试执行时的结果:

*input = numpy.asarray(input)
File "/usr/lib/pymodules/python2.7/numpy/core/numeric.py", line 235, in
  asarray return array(a, dtype, copy=False, order=order)

ValueError: setting an array element with a sequence.*

根据论坛中的一些研究,我了解到问题出在变量的类型上。 img_bw 的类型是 tuple 类型,第二个函数需要 ndarray 类型的变量。我没有找到可以将tuple 转换为ndarray 的正确语法。

谁能指出我正确的方向?

【问题讨论】:

  • 请用英文提问...
  • @Ben:减去“请”,这实际上是必须的。这是无可救药的。
  • @MarcusMüller,不过没必要不礼貌。
  • 我投票决定将此问题作为题外话结束,因为它是法语
  • 我会尽快用英文发布。我只是需要帮助。提前谢谢你。

标签: python arrays numpy raspberry-pi tuples


【解决方案1】:

cv2.threshold 本身返回一个元组,您可以按如下方式正确分配

retval, img_bw = cv2.threshold(img_filtered,127,255,cv2.THRESH_BINARY)

您的原始代码 img_bw = cv2.threshold(img_filtered,127,255,cv2.THRESH_BINARY) 将元组分配给 img_bw

查看文档 (http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_thresholding/py_thresholding.html)

【讨论】:

  • 感谢您的回答,但链接 [docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/… 无法访问。请重新检查链接。
  • 正确的链接是docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/… 谢谢@wolfrevo。当你使用 img_bw = cv2.threshold(img_filtered,127,255,cv2.THRESH_BINARY) 时,python 会自动为 img_bw 分配一个类型元组。而当你使用retval时,img_bw = cv2.threshold(img_filtered,127,255,cv2.THRESH_BINARY),retval是float类型,img_bw是numpy.ndarray类型。再次感谢您
  • 抱歉打错了。我已经更新了答案。如果这是正确答案,请考虑将其标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2017-12-14
  • 2015-08-07
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多