我正在尝试读取图像并将其转换为 python 中的双精度图像,我正在使用 cv2 库
我尝试在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以直接说
但是你的方法也有效。两种方法的结果将是相同的。
要找出数组的类型,请查看其
.dtype
。imread()
默认返回np.uint8
,值范围为 0 到 255,但如果给出正确的标志,它也可以返回其他类型的数组。文档中有详细说明。使用
astype
(或asarray
)转换后,值仍将在 0 到 255 的范围内,只是数据类型不同。如果您需要它们的范围为 0.0 到 1.0,则需要缩放数组(除/乘)。You could just say
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()
returnsnp.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
(orasarray
), 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).