当前位置:   article > 正文

opencv 存储像素值为浮点数的图像 (.tiff)_opencv 存储tiff

opencv 存储tiff

在存储32CF1格式的深度图像时,怎么也存储不对

  • 存储成jpg格式的,会乱码。be like 13.6的数据存储之后再读取变成…e-30
  • 存储成png格式时,会自动把浮点数转换成整数。13.6的数据读取之后就变成14了
  • 直接把深度图片存储成.npy格式python处理很简单,但是需要c++来处理后续数据,c++弄numpy需要第三方库很麻烦
  • 查阅资料才发现可以通过tiff来存储像素值为浮点数的图片,.tiff/.tifpythonc++的opencv库中都能实现

python存储并读取tiff图片

pip install Pillow
  • 1
 #为了防止和rosmsg的Image重复
from PIL import Image as PILImage

# 存储
depth_image = bridge.imgmsg_to_cv2(data, "32FC1") 
depth_name = "depth.tiff"
depth_tiff = PILImage.fromarray(depth_image)
depth_tiff.save(depth_name)

#读取
 with PILImage.open("depth.tiff") as img:
        print(img.getpixel((20,20)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

c++存储并读取tiff图片

//存储

// 读取
string depth_path1 = "/home/tju/catkin_ws_multi_vins/scripts/data/pic_vins_pose/iris_0/images/1713792937.82_depth.tiff";
Mat depth1 = imread ( depth_path1, IMREAD_UNCHANGED );
cout << "depth_size " << depth1.cols << " " << depth1.rows <<endl;
float depth_value = depth1.at<float>(20, 20);
cout << "depth value " << depth_value << endl; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号