我正在尝试读取图像并将其转换为 python 中的双精度图像,我正在使用 cv2 库

发布于 2025-01-12 01:02:32 字数 251 浏览 1 评论 0原文

我尝试在Matlab中做同样的事情,使用imread读取图像,然后使用im2double将其转换为double类型,我怎样才能在python或cv2库中实现同样的事情?

我尝试使用

img=imread('pathofmyimage')
double=np.asarray(img,dtype=np.float64)

但我不确定这个方法

I tried doing the same thing in Matlab by reading the image using imread and then converting it to type double using im2double, how can I achieve the same thing in python or cv2 library?.

I tried using

img=imread('pathofmyimage')
double=np.asarray(img,dtype=np.float64)

but I am not sure of this method

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心的憧憬 2025-01-19 01:02:32

你可以直接说

float_img = img.astype(np.float64)

但是你的方法也有效。两种方法的结果将是相同的。

要找出数组的类型,请查看其 .dtypeimread() 默认返回 np.uint8,值范围为 0 到 255,但如果给出正确的标志,它也可以返回其他类型的数组。文档中有详细说明。

使用 astype(或 asarray)转换后,值仍将在 0 到 255 的范围内,只是数据类型不同。如果您需要它们的范围为 0.0 到 1.0,则需要缩放数组(除/乘)。

You could just say

float_img = img.astype(np.float64)

But your way works too. The result from both methods will be equal.

To find out the type of an array, look at its .dtype. imread() returns np.uint8 by default, with values ranging 0 to 255, but it can return arrays of other types, if given the right flag. That is detailed in the docs.

After conversion with astype (or asarray), the values will still be in the range of 0 to 255, just in a different data type. If you need them to be ranged 0.0 to 1.0, you'd need to scale the array (divide/multiply).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文