Python-反转.tif二进制映像

我正在将Google colab与Jupyter Notebook 3配合使用。

我需要反转一个.tif二进制图像,使其变成一个零,并且将它变成一个零。

我该怎么做? (我仍然需要将图像保存为.tif)

编辑:我认为正在读取我的图像,好像它们完全由0组成。有没有办法正确读取图像?

编辑2::这是链接:https://drive.google.com/open?id=1cVqE6DpU_8AhShzX9_MvJpdlTBEAsMMT

编辑3:它是由0和1组成的,当我尝试在QGis上对其进行虚拟化时,它可以完美显示。 这是代码:

import numpy as np
import imageio

image = imageio.imread("path")

for i in range(0,len(image)):
  for x in range(0,len(image)):
    if image[i,x] == 0:
      image[i,x] = 1
    elif image[i,x] == 1:
      image[i,x] = 0

imageio.imwrite("path",image)
xiaomo1128 回答:Python-反转.tif二进制映像

使用软件包imageio

使用功能imread

读取图像

反转ndarray

使用imwrite

保存图像

https://imageio.readthedocs.io/en/stable/userapi.html

,

由于您似乎正在使用imageio,因此可以尝试:

import imageio
import numpy as np                                                                          

# Load image
image = imageio.imread("mask.tif")                                                         

# Change 1s to 0s and 0s to 1s
image = 1 - image                                                                           

# Save result
imageio.imwrite("result.tif",image)

请注意,您应该尝试避免使用Python图像处理进行for循环,因为它们非常缓慢且效率低下。当您使用imageio时,您的图像已经是一个Numpy数组,因此您可以将整个反转作为一个简单的矢量化数学来完成,而无需循环和没有if语句-这也很慢。>


如果使用PIL /枕头,则可以将1转换为0并将0转换为1,如下所示:

from PIL import Image

# Open image
im = Image.open('mask.tif') 

# Invert
result = im.point(lambda i: 1-i) 

# Save
result.save('result.tif')

enter image description here


关于图像...它只有一个8位数据通道。 60%的像素是0,40%的像素是1。如果显示它,它将看起来很暗,因为0是黑色,而255是白色,因此您的图像是黑色的,并且是99.5%的黑色,而不是黑白。

本文链接:https://www.f2er.com/2905790.html

大家都在问