【问题标题】:How to convert any image to CV_32FC1 in Python如何在 Python 中将任何图像转换为 CV_32FC1
【发布时间】:2020-03-27 18:54:18
【问题描述】:

我有用于将图像转换为“CV_32FC1”的 C++ 代码,但我想在 Python 中做同样的事情。这是我的 C++ 代码。

img.convertTo(img, CV_32FC1);

我如何在 Python 中做同样的事情?

【问题讨论】:

标签: python image opencv image-processing opencv3.0


【解决方案1】:

Python 使用numpy 来管理图像像素数据,你可以在 numpy 中做这样的事情来改变矩阵的数据类型:

img = img.astype("float32")

正如@HansHirse 在 cmets 中添加的那样,此操作只会更改矩阵的数据类型,但如果要更改像素值的比例,则应使用img = img.astype("float32")/255,将所有像素值转换为范围0.0 - 1.0

【讨论】:

  • 刚刚测试了C++ API的convertTo,记错了。实际上,convertTo 不会自动缩放,但也会改变数据类型。因此,普通的.astype 将正确模仿convertTo 的行为。
  • @HansHirse 我对 OpenCV 不熟悉,你知道cvtColor() 是否有用吗?
  • @AlexanderCécile 来自文档:dst – 与src 相同大小和深度的输出图像。 所以,不 – 类型转换不应该使用cv2.cvtColor
  • @Zdar 这是 CV_32FC1 的意思是浮动通道一,因此如果我们在 numpy 中将其转换为浮动 32,则通道数将保持不变。那有什么解决办法呢??
  • @ParagJain 原谅?你能澄清你的问题吗?
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 2012-08-25
  • 2017-09-10
  • 2018-09-26
  • 2010-09-19
  • 2018-06-15
相关资源
最近更新 更多