【问题标题】:Picture is in a wrong form?图片格式不对?
【发布时间】:2020-10-26 15:13:41
【问题描述】:

我正在用 OpenCV 库拍照:

def display_frame(self, frame, dt):
        texture = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')
        texture.blit_buffer(frame.tobytes(order=None), colorfmt='bgr', bufferfmt='ubyte')
        texture.flip_vertical()
        self.image.texture = texture
        cv2.imwrite('/home/mark/frontend/picture_taken.jpg', self.image)
        cam.release()
        cv2.destroyAllWindows()

以上抛出:

cv2.imwrite('/home/mark/frontend/picture_taken.jpg', self.image)
 TypeError: Expected Ptr<cv::UMat> for argument 'img'

我没有包括代码的所有部分,但上面的内容让您知道什么类型 我正在尝试在磁盘上写入图像。在 GitHub 上,我发现当我们尝试编写以错误形式传入的图像时,通常会引发此错误。在某些情况下,这可以 通过在我写图像的行上方包含img = numpy.array(self.image) 来解决。但是,这对我不起作用。

如何解决这个问题?

【问题讨论】:

  • 它需要一个可以读取的图像。 self.image的类型是什么?
  • 这是一个 Kivy 图像文件。 &lt;kivy.uix.image.Image object at 0x7f28af9786d0&gt;
  • 根据documentation,那不是图像,而是显示图像的小部件。
  • @NiklasMertsch Dammit,我完全忘记了它只是一个小部件而不是实际图像。

标签: python opencv-python


【解决方案1】:

您好,这只是一个猜测,但根据我自己的经验,我认为您的图像变量是 None 类型。如果您的 self.image 有任何价值,您可以尝试打印出来吗?

【讨论】:

  • 这不是无。 &lt;kivy.uix.image.Image object at 0x7f28af9786d0&gt; 这是一个 Kivy Image 对象。
  • oo 如果是这样,我认为您需要将 kivy 对象转换为 numpy 数组。 stackoverflow.com/questions/58752956/…。试试这段代码,因为 cv2.imwrite 需要 numpy 数组作为输入
猜你喜欢
  • 1970-01-01
  • 2015-03-20
  • 2015-01-20
  • 2019-09-10
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
相关资源
最近更新 更多