gpt4 book ai didi

python - skimage.transform.rotate : getting a completely black image on saving

转载 作者:行者123 更新时间:2023-12-01 01:55:59 24 4
gpt4 key购买 nike

我正在使用 python 3.6 并在图像上执行以下功能(读取图像、填充图像、裁剪图像、旋转图像)。我使用 skimage 或基本 python 函数。如果我不旋转图像,则不会出现警告。但如果我旋转图像,我会收到以下警告

/anaconda3/lib/python3.6/site-packages/skimage/util/dtype.py:122: UserWarning: Possible precision loss when converting from int64 to float64 .format(dtypeobj_in, dtypeobj_out))

当我尝试使用 imshow 查看图像时,图像值似乎在 (1e-17) ( https://ibb.co/cSfzb7 ) 范围内。我猜图像值已在某处标准化,但我无法找到该位置。

如果我尝试保存旋转的图像,我会得到一个全黑的图像。

im = img_as_uint(image)
imsave(image_path, im, plugin='imageio')

我尝试删除 img_as_uint,使用默认的 imsave,使用(freeimage,imagio)作为插件选项

/anaconda3/lib/python3.6/site-packages/skimage/util/dtype.py:122: UserWarning: Possible precision loss when converting from int64 to float64 .format(dtypeobj_in, dtypeobj_out))

/anaconda3/lib/python3.6/site-packages/skimage/util/dtype.py:122: UserWarning: Possible precision loss when converting from float64 to uint16 .format(dtypeobj_in, dtypeobj_out))

/anaconda3/lib/python3.6/site-packages/skimage/io/_io.py:132: UserWarning: /Users/ashisharora/google_Drive/madcat_arabic/lines/AAW_ARB_20061105.0017-S1_1_LDC0372_00z1.png is a low contrast image warn('%s is a low contrast image' % fname)

import sys
import argparse
import os
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import skimage
from skimage.io import imread, imsave, imshow
from skimage.transform import rotate
from skimage import img_as_uint

im_wo_pad = imread(image_file_name)
im = pad_image(im_wo_pad)
region_initial = im[281:480, 2509:4766]
rotation_angle_in_rad = -0.00708
img2 = rotate(region_initial, degrees(rotation_angle_in_rad))
region_final = img2[15:298, 7:2263]
imshow(region_final)


def pad_image(image):
offset = 200
max_val = 255
height = image.shape[0]
im_pad = np.concatenate((max_val * np.ones((height, offset),
dtype=int), image), axis=1)
im_pad1 = np.concatenate((im_pad, max_val * np.ones((height, offset),
dtype=int)), axis=1)

width = im_pad1.shape[1]

im_pad2 = np.concatenate((max_val * np.ones((offset, width),
dtype=int), im_pad1), axis=0)
im_pad3 = np.concatenate((im_pad2, max_val * np.ones((offset, width),
dtype=int)), axis=0)
return im_pad3

我尝试了堆栈溢出上发布的解决方案,但它不适用于我的情况。如果有人可以提供帮助,我将不胜感激。

最佳答案

默认情况下,skimage 旋转函数会转换为浮点型并将图像值缩放到 0 到 1 之间。(请参阅 http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.rotate)

尝试使用preserve_range参数和一些类型转换,例如,

img_rot = skimage.transform.rotate(img, rot_angle, preserve_range=True).astype(np.uint8)

关于python - skimage.transform.rotate : getting a completely black image on saving,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com