对图片进行crop操作

发布时间:2023年12月22日

一、核心代码

中心裁剪:代码使用 tf.image.crop_to_bounding_box 函数对输入图像进行中心裁剪。这个函数接受以下参数:

  • data["image"]:要裁剪的图像。
  • (height - crop_size) // 2(width - crop_size) // 2:这些参数确定了裁剪框的左上角坐标,以确保在图像中心进行裁剪。
  • crop_size:裁剪的尺寸。
  • crop_size:裁剪的尺寸。

二、全量代码?

import matplotlib.pyplot as plt
import tensorflow as tf
from PIL import Image
from io import BytesIO
import requests
from keras import ops

# 定义 preprocess_image 函数
def preprocess_image(data, image_size=256):
    height = ops.shape(data["image"])[0]
    width = ops.shape(data["image"])[1]
    crop_size = ops.minimum(height, width)
    image = tf.image.crop_to_bounding_box(
        data["image"],
        (height - crop_size) // 2,
        (width - crop_size) // 2,
        crop_size,
        crop_size,
    )

    image = tf.image.resize(image, size=[image_size, image_size], antialias=True)
    return ops.clip(image / 255.0, 0.0, 1.0)

# 定义下载图像函数
def download_image(img_url):
    response = requests.get(img_url)
    if response.status_code == 200:
        return response.content
    else:
        return None

# 定义显示图像函数
def display_image(images,positions):
    plt.figure(figsize=(10, 5))
    for pos in positions:
      plt.subplot(1, 2, pos)
      plt.title("Image")
      plt.imshow(images[pos-1])
      plt.axis("off")
    plt.show()

# 定义主函数
def process_and_display_image(img_url, image_size=256):
    # 下载图像
    image_data = download_image(img_url)

    if image_data is not None:
        # 创建Pillow图像对象
        image = Image.open(BytesIO(image_data))
        # 转换为TensorFlow张量
        image = tf.convert_to_tensor(image)

        # 调用预处理函数进行图像预处理
        preprocessed_image = preprocess_image({"image": image}, image_size=image_size)

        # 显示原始图像和预处理后的图像
        display_image([image,preprocessed_image.numpy()],[1,2])
    else:
        print("Failed to retrieve the image.")

# 调用主函数并传递图像URL和其他参数
img_url = 'https://pic1.zhimg.com/80/v2-23e87ffc0da8098a9f7d733cdee58ff4_1440w.webp?source=2c26e567'
process_and_display_image(img_url)

三、结果

文章来源:https://blog.csdn.net/SmartDemo/article/details/135158826
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。