对图片进行crop操作
2023-12-22 18:33:35
一、核心代码
中心裁剪:代码使用
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!