python - 使用opencv编写pgms时如何更改最大灰度的默认值?

我正在使用python使用opencv编写pgm,如下所示...

   cv.SaveImage("a.pgm",np.array(image.astype(np.uint16)))

因此,我将数据强制转换为无符号的16位。可能是写入pgm时,灰度的最大值设置为65535,我的数据的最大值为1103。

我的猜测是,当我们将pgms保存在opencv中时,该值是由数据类型计算并设置为max的,而不是基于实际数据。

有人可以帮助您知道如何执行此操作,以便写入最大灰度级别的正确值。

非常感谢。

最佳答案

保存之前,您只需要将图像乘以转换因子即可。在您的情况下,该因素将为65535 / 1103。您可以使用ConvertScale来执行此操作,它使您可以将一个标量乘以一个数组。像这样:

cv.ConvertScale(im, im, scale=65535 / 1103.0)

https://stackoverflow.com/questions/10583311/

相关文章:

image-processing - 开源库可消除视频帧的运动模糊吗?

c# - C#中的骨架化OpenCV

xcode - OpenCv ImShow()函数闪烁

opencv - 使用opencv查找对象旋转/比例/位置的方法

python - 使用开放式CV在Python中进行背景提取

opencv - 使用什么方法(在OpenCV中)将标记与适当的骨骼结构相关联?

opencv - 有没有办法在Windows上安装OpenCV二进制文件?

qt - 带有 QtCreator 的 Ubuntu 12.04 上的 OpenCV 2.4

iphone - OpenCV cv::dft()iOS断言错误

opencv - 在JavaCV中将IPL_DEPTH_16S镜像转换为IPL_DEPTH_8U