09_Tensorflow2图像处理大赏:让你的图片笑出AI感,惊艳朋友圈!

在这里插入图片描述

1. 图像处理案例

1.1 逆时针旋转90度

import tensorflow as tf
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy
import os

def show_pic(pic,name,cmap=None):
    '''显示图像'''
    plt.imshow(pic,cmap=cmap)   
    plt.axis('off')   # 打开坐标轴为 on
# 设置图像标题
    plt.title('%s'%(name))   
    plt.show()

img_path = './images/219.jpg'
# 读取图像
img = tf.io.read_file(img_path) 
# 将图像解码为uint8张量
img = tf.image.decode_jpeg(img)   
print(img.shape,img.dtype)
show_pic(img,'img')

# 将图像逆时针旋转90度
rotated_img = tf.image.rot90(img)  
show_pic(rotated_img,'rotated_img')
(375, 500, 3) <dtype: 'uint8'>

在这里插入图片描述

在这里插入图片描述

1.2 中心裁剪

 # 中心裁剪,裁剪比例为60%
cropped_img1 = tf.image.central_crop(img, central_fraction=0.6)  
show_pic(cropped_img1,'cropped_img1')

# 剪裁图片,高度和宽度
cropped_img2 = tf.image.resize_with_crop_or_pad(img, 200, 200)   
show_pic(cropped_img2,'cropped_img2')

在这里插入图片描述

在这里插入图片描述

1.3 图像调整大小

#  图像数据类型转换,并归一化到[0,1]之间
float_img = tf.image.convert_image_dtype(img, tf.float32) 
#  图像调整大小
resized_image = tf.image.resize(float_img,[300,300])   
show_pic(resized_image,'resized_image')

在这里插入图片描述

1.4 改变图像底色

#  转换为灰度
gray_img = tf.image.rgb_to_grayscale(img)
# 将三通道压缩成单通道 
gray_img = tf.squeeze(gray_img)   
show_pic(gray_img,'img','gray')

在这里插入图片描述

1.5 图像数据类型转换

#  图像数据类型转换,并归一化到[0,1]之间
float_img = tf.image.convert_image_dtype(img, tf.float32)   
# 对rgb图像进行hsv转换,输入的图像数据类型必须是half,float16,float32,float64)
hsv_img = tf.image.rgb_to_hsv(float_img)   
show_pic(hsv_img,'hsv_img','hsv')

在这里插入图片描述

1.6 改变图像亮度

# 改变图像亮度
bright_img = tf.image.adjust_brightness(img, 0.5)   
show_pic(bright_img,'bright_img')

在这里插入图片描述

1.7 改变图像饱和度

saturated_img= tf.image.adjust_saturation(img,8)   # 改变图像饱和度
show_pic(saturated_img,'saturated_img')

在这里插入图片描述

1.8 改变对比度

# 改变对比度
contrasted_img = tf.image.adjust_contrast(img, 5)   
show_pic(contrasted_img,'contrasted_img')
# 编码为tensor格式
encoded_image = tf.image.encode_jpeg(contrasted_img)   
#将编码后的图片保存到指定路径
with tf.io.gfile.GFile('./images/0001.jpg', 'wb') as file:  
    file.write(encoded_image.numpy())

在这里插入图片描述

1.9 水平翻转图像

# 水平翻转图像
flipped_img1 = tf.image.flip_left_right(img)   
show_pic(flipped_img1,'flipped_h')

# 垂直翻转图像
flipped_img2 = tf.image.flip_up_down(img)   
show_pic(flipped_img2,'flipped_v')

在这里插入图片描述

在这里插入图片描述

1.10 改变图像透明度

# 创建一个元素全为128的张量
Alpha_channel = tf.fill([img.shape[0],img.shape[1],1],128.0)  
# 归一化后的元素值为0.5
Alpha_channel = Alpha_channel/255.0   
# 将0.5倍透明通道合并到原图
four_channel_img = tf.concat([float_img,Alpha_channel],2)   
print(four_channel_img.shape)
show_pic(four_channel_img,'four_channel_img')
(375, 500, 4)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875503.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】认识C++(前言)

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:C: 探索C编程精髓&#xff0c;打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、本节概述 二、什么是C 三、C发展史 四…

苏茵茵:以时尚之名,诠释品质生活

在女性追求个性化与自我表达的今天&#xff0c;时尚早已超越了简单的穿着打扮&#xff0c;它成为女性展现自我风格、彰显独特魅力的重要方式。从广泛的兴趣爱好到精心雕琢的个人风格&#xff0c;每一处细节都闪耀着女性对个性独特与自我表达的深切渴望。正是这股不可阻挡的潮流…

Unity6 + UE5.4 PSO缓存实践记录

题图&#xff08;取自COD冷战的着色器编译提示&#xff09; PSO&#xff08;管线状态对象 Pipeline State Object&#xff09;是伴随现代图形API&#xff08;DirectX12、Vulkan、Metal&#xff09;而出现的概念&#xff0c;它本质上是单次绘制时渲染管线所处的状态信息的集合&…

Blender渲染太慢怎么办?blender云渲染已开启

动画行业蓬勃发展&#xff0c;动画制作软件亦持续推陈出新&#xff0c;当制作平台日益丰富&#xff0c;创作难度降低&#xff0c;创作效率提升&#xff0c;如何高效完成复杂动画的渲染就成了从业者更关心的问题。 云渲染技术的出现&#xff0c;无疑为动画制作者提供了前所未有…

kafka原理剖析及实战演练

一、消息系统概述 一&#xff09;消息系统按消息发送模型分类 1、peer-to-peer&#xff08;单播&#xff09; 特点&#xff1a; 一般基于pull或polling接收消息发送对队列中的消息被一个而且仅仅一个接收者所接收&#xff0c;即使有多个接收者在同一队列中侦听同一消息即支持异…

利用熵权法进行数值评分计算——算法过程

1、概述 在软件系统中&#xff0c;研发人员常常遇上需要对系统内的某种行为/模型进行评分的情况。例如根据系统的各种漏洞情况对系统安全性进行评分、根据业务员最近操作系统的情况对业务员工作状态进行打分等等。显然研发人员了解一种或者几种标准评分算法是非常有利于开展研…

中控室控制台处在自动状态什么意思

在现代工业和智能控制系统中&#xff0c;中控室控制台作为集中控制和管理各种设备、系统和流程的核心&#xff0c;扮演着至关重要的角色。当提到中控室控制台处在自动状态时&#xff0c;这通常意味着控制台已经切换到一种高度智能化的工作模式&#xff0c;能够自动调整和管理各…

【SQL】百题计划:SQL判断条件OR的使用。

【SQL】百题计划-20240912 Select name, population, area from World where area>3000000 or population > 25000000;

品读 Java 经典巨著《Effective Java》90条编程法则,第4条:通过私有构造器强化不可实例化的能力

文章目录 【前言】欢迎订阅【品读《Effective Java》】系列专栏java.lang.Math 类的设计经验总结 【前言】欢迎订阅【品读《Effective Java》】系列专栏 《Effective Java》是 Java 开发领域的经典著作&#xff0c;作者 Joshua Bloch 以丰富的经验和深入的知识&#xff0c;全面…

网络运输层之(1)TCP协议基础

网络运输层之(1)TCP协议基础 Author: Once Day Date: 2024年9月12日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-…

cv2.bitwise_or 提取ROI区域

原图如下所示&#xff0c;想提取圆形ROI区域&#xff0c;红色框 img np.ones(ori_img.shape, dtype"uint8") img img * 255 cv2.circle(img, (50,50), 50, 0, -1) self.bitwiseOr cv2.bitwise_or(ori_img, circle)使用一个和原图尺寸一致的图像做mask,图白圆黑 以…

通信工程学习:什么是PC永久连接、SPC软永久连接

一、PC永久连接 PC&#xff08;Permanent Connection&#xff09;永久连接是一种由网管系统通过网管协议建立的长期稳定的连接方式。在ASON&#xff08;自动交换光网络&#xff09;中&#xff0c;PC永久连接沿袭了传统光网络的连接建立形式&#xff0c;其特点主要包括&#xff…

视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践

随着科技的飞速发展&#xff0c;视频监控平台在社会安全、企业管理、智慧城市构建等领域发挥着越来越重要的作用。一个高效的视频监控平台&#xff0c;不仅依赖于先进的硬件设备&#xff0c;更离不开强大的视频处理技术作为支撑。这些平台集成了多种先进的视频技术&#xff0c;…

微波无源器件 OMT 2 倍频程带宽紧凑十字转门OMT

摘要&#xff1a; 一个64%瞬态带宽的可变比例十字转门OMT用于在所谓的延伸C频带卫星链接被提出。所体术的结构通过在四个输出矩形波导结处添加一个拓宽的单阶梯来克服现在的实际带宽限制。这个明智的(judicious)调整,和减高度波导和E面弯头的和功率合成器的使用&#xff0c;保证…

kali Linux 安装教程(保姆级)

kali 背景 基于Debian的Linux操作系统 Kali Linux是基于Debian的Linux发行版&#xff0c; 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成&#xff0c;BackT…

专题三_二分查找算法_算法详细总结

目录 二分查找 1.⼆分查找&#xff08;easy&#xff09; 1&#xff09;朴素二分查找&#xff0c;就是设mid(leftright)/2,xnums[mid],t就是我们要找的值 2&#xff09;二分查找就是要求保证数组有序的前提下才能进行。 3&#xff09;细节问题&#xff1a; 总结&#xff1a…

系统优化工具 | PC Cleaner v9.7.0.3 绿色版

PC Cleaner是一款功能强大的电脑清理和优化工具&#xff0c;旨在通过清理系统垃圾文件、解除恶意软件和优化系统性能来提高计算机的运行效率。该软件提供了多种功能&#xff0c;可以帮助用户维护和提升计算机的整体表现。 PC Cleaner 支持 Windows 7 及以上操作系统&#xff0…

Visual Studio Installer 2022 安装提示正在提取文件 进度条不动 0B每秒

Visual Studio Installer 稍等片刻...正在提取文件 进度条不动 0B每秒 一段时间后提示 循环下载安装文件 无法下载安装文件。请检查Internet 连接&#xff0c;然后重试 打开vs2017 或者vs2019或者vs2022的安装程序(visual studio installer)时&#xff0c;下载进度条不动&…

智能体 vs AI智能体:区别与联系,一文读懂!

​ 在AI技术蓬勃发展的今天&#xff0c;“智能体”&#xff08;Agent&#xff09;和”AI智能体”&#xff08;AI Agent&#xff09;两个概念经常被提及&#xff0c;二者在很多场合下会被混淆&#xff0c;但其实它们有着不同的定义和应用。我觉得很有必要小小科普下两者的定义与…

龙芯+FreeRTOS+LVGL实战笔记(新)——06添加二级按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以…