如何保存Scikit image viewer的输出图像?
解决方法
方案1:直接保存处理后的原始图像数据(推荐)
viewer.show()本质只是将你已经计算得到的edges数组做可视化渲染,你要存储的核心图像数据已经存在于edges变量中,不需要依赖viewer的输出即可直接保存,这种方式得到的是无冗余信息的纯图像结果。
代码示例:
import skimage image1 = skimage.io.imread(fname='shot1.tif', as_gray=True) edges = skimage.feature.canny( image=image1, sigma=2.0, low_threshold=0.1, high_threshold=0.2 ) # 直接保存边缘检测结果,转成uint8格式适配图像存储规范 skimage.io.imsave(fname='edges_output.tif', arr=edges.astype('uint8') * 255) # 可视化逻辑保持不变 viewer = skimage.viewer.ImageViewer(edges) viewer.show()
说明:canny算子返回的是布尔类型的二值数组,astype('uint8') * 255操作是将布尔值的True/False转为对应图像的白/黑(255/0),避免部分图像格式存储时出现识别异常。
方案2:直接保存viewer的渲染结果
如果你确实需要存储viewer渲染后的展示内容,可以直接调用ImageViewer实例内置的save_to_file方法,无需额外依赖其他工具:
viewer = skimage.viewer.ImageViewer(edges) # 保存viewer渲染的图像内容到文件 viewer.save_to_file('viewer_render_output.png') viewer.show()
内容的提问来源于stack exchange,提问作者user6895869
相关产品推荐
相关产品推荐

