0

如果我imwrite是二值化图像,它只会创建灰度图像文件而不是 indexed=2 文件。我需要哪些选项imwrite来完成此操作?如果可能的话,我也想要 LZW 压缩。

  orig = cv2.imread('rgb.tiff')
  work = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)
  work = cv2.ximgproc.niBlackThreshold(work, 255, cv2.THRESH_BINARY, 41, -0.2,
    binarizationMethod=cv2.ximgproc.BINARIZATION_NICK)
  cv2.imwrite('bw.tiff', work)

灰度与索引

4

2 回答 2

2

如果你真的非常想要一个双层 LZW 压缩的 TIFF,你可以像这样用wand写一个:

#!/usr/bin/env python3

from wand.image import Image

# Open image and save as bi-level LZW-compressed version
with Image(filename='image.tif') as img: 
    img.compression='lzw'
    img.type='bilevel'
    img.save(filename='result.tif')

输入:

在此处输入图像描述

结果:

在此处输入图像描述

请注意,您可以像这样保存OpenCV图像,但您必须先将其 BGR 顺序转换为传统的 RGB 顺序。您可以使用:

RGB = cv2.cvtColor(BGRimage, cv2.COLOR_BGR2RGB)

或纯 Numpy:

RGB = BGRimage[...,::-1]

关键词:Python、图像处理、魔杖、TIFF、TIF、LZW、压缩、压缩、双层、双层

于 2020-05-24T18:34:33.680 回答
0

imwrite 使用此功能只能保存 8 位(或 16 位无符号 (CV_16U),对于 PNG、JPEG 2000 和 TIFF)单通道或 3 通道(具有“BGR”通道顺序)图像。

于 2020-05-24T17:46:23.963 回答