0

我尝试裁剪 16 位(浮点)/波段 TIFF 图像,但生成的图像是 8 位(字节)/波段。有什么我应该做的吗?

from vipsCC import *

input_file_path = 'input.tiff'
output_file_path = 'output.tiff'

bands = 4
bg = VImage.VImage.black(width,height,bands)
im = VImage.VImage(input_file_path) # Giving 16bits(float)/band TIFF image...

im_frag = im.extract_area(dx,dy,width,height)
bg.insertplace(im_frag,0,0)
bg.write(output_file_path) # Results 8bits(byte)/band ...
4

1 回答 1

1

a.insertplace(b)执行就地插入操作。它直接修改a,粘贴b进去。如果b不是正确的类型,则将其强制转换为 match a

你可能想要简单insert的 . 尝试:

import sys
from vipsCC import *

im = VImage.VImage(sys.argv[1]) 
im_frag = im.extract_area(10, 10, 200, 200)

bg = VImage.VImage.black(1000, 1000, 1)
bg = bg.insert(im_frag, 100, 100)
bg.write(sys.argv[2])

a.insert(b)制作一个足以容纳所有a和的新图像b,因此根据需要添加条带,调整格式等等。它也比insertplace处理任何大小的图像要快得多。

您还使用旧的 vips7 Python 界面。现在有一个新的 vips8 更好一点:

http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-python.html

大约一年前有一篇博客文章介绍了新界面:

http://libvips.blogspot.co.uk/2014/10/image-annotation-with-pyvips8.html

于 2015-12-17T17:30:14.077 回答