resize keras load_img(PIL Image resize) vs cv2.resize

keras 里的load img用的是PIL,与cv2中的resize算法不同, 两个库的nearest算法结果不同

 

cv2: 

https://www.cnblogs.com/jyxbk/p/7651241.html

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 

参数说明:

src - 原图

dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同

dsize - 目标图像大小。当dsize为0时,它可以通过以下公式计算得出:

所以,参数dsize和参数(fx, fy)不能够同时为0

fx - 水平轴上的比例因子。当它为0时,计算公式如下:

fy - 垂直轴上的比例因子。当它为0时,计算公式如下:

 

interpolation - 插值方法。共有5种:

1)INTER_NEAREST - 最近邻插值法

2)INTER_LINEAR - 双线性插值法(默认)

3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

4)INTER_CUBIC - 基于4x4像素邻域的3次插值法

5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

 

keras load_img

https://github.com/keras-team/keras-preprocessing/blob/master/keras_preprocessing/image/utils.py

def load_img(path, grayscale=False, color_mode='rgb', target_size=None,
             interpolation='nearest'):
    """Loads an image into PIL format.
    # Arguments
        path: Path to image file.
        grayscale: DEPRECATED use `color_mode="grayscale"`.
        color_mode: The desired image format. One of "grayscale", "rgb", "rgba".
            "grayscale" supports 8-bit images and 32-bit signed integer images.
            Default: "rgb".
        target_size: Either `None` (default to original size)
            or tuple of ints `(img_height, img_width)`.
        interpolation: Interpolation method used to resample the image if the
            target size is different from that of the loaded image.
            Supported methods are "nearest", "bilinear", and "bicubic".
            If PIL version 1.1.3 or newer is installed, "lanczos" is also
            supported. If PIL version 3.4.0 or newer is installed, "box" and
            "hamming" are also supported.
            Default: "nearest".
    # Returns
        A PIL Image instance.
    # Raises
        ImportError: if PIL is not available.
        ValueError: if interpolation method is not supported.
    """
    if grayscale is True:
        warnings.warn('grayscale is deprecated. Please use '
                      'color_mode = "grayscale"')
        color_mode = 'grayscale'
    if pil_image is None:
        raise ImportError('Could not import PIL.Image. '
                          'The use of `load_img` requires PIL.')
    with open(path, 'rb') as f:
        img = pil_image.open(io.BytesIO(f.read()))
        if color_mode == 'grayscale':
            # if image is not already an 8-bit, 16-bit or 32-bit grayscale image
            # convert it to an 8-bit grayscale image.
            if img.mode not in ('L', 'I;16', 'I'):
                img = img.convert('L')
        elif color_mode == 'rgba':
            if img.mode != 'RGBA':
                img = img.convert('RGBA')
        elif color_mode == 'rgb':
            if img.mode != 'RGB':
                img = img.convert('RGB')
        else:
            raise ValueError('color_mode must be "grayscale", "rgb", or "rgba"')
        if target_size is not None:
            width_height_tuple = (target_size[1], target_size[0])
            if img.size != width_height_tuple:
                if interpolation not in _PIL_INTERPOLATION_METHODS:
                    raise ValueError(
                        'Invalid interpolation method {} specified. Supported '
                        'methods are {}'.format(
                            interpolation,
                            ", ".join(_PIL_INTERPOLATION_METHODS.keys())))
                resample = _PIL_INTERPOLATION_METHODS[interpolation]
                img = img.resize(width_height_tuple, resample)
        return img

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModuleNotFoundError Traceback (most recent call last) Cell In[1], line 10 8 from tensorflow.keras.preprocessing.image import load_img 9 from importlib import reload ---> 10 import segmenteverygrain as seg 11 from segment_anything import sam_model_registry, SamAutomaticMaskGenerator, SamPredictor 12 from tqdm import trange File ~\segmenteverygrain-main\segmenteverygrain\segmenteverygrain.py:42 39 from tensorflow.keras.optimizers import Adam 40 from tensorflow.keras.preprocessing.image import load_img ---> 42 from segment_anything import sam_model_registry, SamAutomaticMaskGenerator, SamPredictor 44 def predict_image_tile(im_tile,model): 45 if len(np.shape(im_tile)) == 2: File D:\Anaconda\lib\site-packages\segment_anything\__init__.py:14 1 # Copyright (c) Meta Platforms, Inc. and affiliates. 2 # All rights reserved. 3 4 # This source code is licensed under the license found in the 5 # LICENSE file in the root directory of this source tree. 7 from .build_sam import ( 8 build_sam, 9 build_sam_vit_h, (...) 12 sam_model_registry, 13 ) ---> 14 from .predictor import SamPredictor 15 from .automatic_mask_generator import SamAutomaticMaskGenerator File D:\Anaconda\lib\site-packages\segment_anything\predictor.py:14 10 from segment_anything.modeling import Sam 12 from typing import Optional, Tuple ---> 14 from .utils.transforms import ResizeLongestSide 17 class SamPredictor: 18 def __init__( 19 self, 20 sam_model: Sam, 21 ) -> None: File D:\Anaconda\lib\site-packages\segment_anything\utils\transforms.py:10 8 import torch 9 from torch.nn import functional as F ---> 10 from torchvision.transforms.functional import resize, to_pil_image # type: ignore 12 from copy import deepcopy 13 from typing import Tuple ModuleNotFoundError: No module named 'torchvision'
07-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值