100天精通Python丨黑科技篇 —— 06、Python 修图(滤镜、灰度、裁剪、视觉处理、图像分割、特征提取)

news/2024/10/29 3:27:55/

文章目录

    • 一、PIL 常规修图操作
      • 1. 读取图片
      • 2. 图片缩放
      • 3. 图片旋转
      • 4. 图片裁剪
      • 5. 图片滤镜
    • 二、OpenCV 图像处理、视频处理、对象识别
    • 三、scikit-image 视觉算法,包括滤波、形态学操作、图像分割、特征提取
    • 四、TensorFlow 图像分类、目标检测、图像生成

有些小伙伴可能还不知道,Python的强大图片处理能力,今天西红柿来介绍一二。Python可以通过各种库(如Pillow、OpenCV、matplotlib等)进行图像的读取、修改、保存、显示等操作。Python可以对图片进行裁剪、旋转、缩放、滤镜、颜色调整等处理,还可以进行图像识别、图像分割、图像合成等高级图像处理。Python的图像处理能力不仅可以应用于计算机视觉、图像识别、机器学习等领域,也可以应用于图像处理软件开发、图像处理算法研究等方面。
Python 修图效果展示①:拼图

Python 拼图效果展示

本文收录于 《100天精通Python专栏 - 快速入门到黑科技》,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造,分基础知识篇和黑科技应用两大部分,欢迎订阅本专栏,订阅后可私聊进Python全栈VIP交流群(问题解答、互相帮助)还可领取20GPython视频和100本互联网行业电子书。

  • 基础知识篇以理论知识为主,旨在帮助没有语言基础的小伙伴,学习我整理成体系的精华知识,快速入门构建起知识框架;
  • 黑科技应用篇以实战为主,包括数据分析、机器学习、计算机视觉、自然语言处理、数据可视化等等,让你真的会用Python解决实际问题。
学习路径指引专栏定位适宜人群
体系化学习丨100天精通Python专栏 快速入门没有语言基础,精华学习,快速掌握
黑科技实战丨100天精通Python专栏 玩转技术有一定的基础,学以致用
CSDN x 信息技术智库社区 交流互助你不是一个人在编程!!

一、PIL 常规修图操作

以下是使用Python处理图片的示例代码:

1. 读取图片

from PIL import Image# 打开图片
img = Image.open("image.jpg")# 显示图片
img.show()# 获取图片尺寸
width, height = img.size# 获取像素数据
pixels = img.load()# 遍历像素
for x in range(width):for y in range(height):r, g, b = pixels[x, y]# 处理像素

2. 图片缩放

from PIL import Image# 打开图片
img = Image.open("image.jpg")# 缩放图片
img = img.resize((new_width, new_height))# 保存图片
img.save("new_image.jpg")

3. 图片旋转

from PIL import Image# 打开图片
img = Image.open("image.jpg")# 旋转图片
img = img.rotate(angle)# 保存图片
img.save("new_image.jpg")

4. 图片裁剪

from PIL import Image# 打开图片
img = Image.open("image.jpg")# 裁剪图片
img = img.crop((left, top, right, bottom))# 保存图片
img.save("new_image.jpg")

5. 图片滤镜

from PIL import Image
from PIL import ImageFilter# 打开图片
img = Image.open("image.jpg")# 添加滤镜
img = img.filter(ImageFilter.GaussianBlur(radius))# 保存图片
img.save("new_image.jpg")

以上是西红柿会用到的一些常用的图片处理操作的示例代码,具体实现可根据需要进行修改和调整。

当然,Python 还有很多其他强大的图片处理库和技术可以使用,虽然无法满足专业的修图需求,但脚本化一键处理,西红柿觉得也非常使用,以下是一些示例:

二、OpenCV 图像处理、视频处理、对象识别

OpenCV是一个广泛使用的计算机视觉库,可以用于图像处理、视频处理、对象识别等。它支持Python、C++、Java等多种编程语言。

下面是一个使用OpenCV实现的简单示例,将一张图片转换为灰度图:

import cv2# 读取图片
img = cv2.imread('image.jpg')# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 显示图片
cv2.imshow('gray', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、scikit-image 视觉算法,包括滤波、形态学操作、图像分割、特征提取

scikit-image是一个基于Python的图像处理库,提供了各种图像处理和计算机视觉算法,包括滤波、形态学操作、图像分割、特征提取等。

以下是一个使用scikit-image实现的简单示例,将一张图片进行边缘检测:

from skimage import io, filters# 读取图片
img = io.imread('image.jpg')# 边缘检测
edges = filters.sobel(img)# 显示图片
io.imshow(edges)
io.show()

四、TensorFlow 图像分类、目标检测、图像生成

TensorFlow是一个流行的机器学习库,可以用于图像处理、自然语言处理、数据分析等领域。它提供了各种深度学习模型和算法,可以用于图像分类、目标检测、图像生成等任务。

以下是一个使用TensorFlow实现的简单示例,使用预训练的模型进行图像分类:

import tensorflow as tf
import numpy as np
from PIL import Image# 加载模型
model = tf.keras.applications.MobileNetV2()# 读取图片
img = Image.open('image.jpg').resize((224, 224))
img = np.array(img)# 预处理图片
img = tf.keras.applications.mobilenet_v2.preprocess_input(img)# 进行预测
predictions = model.predict(np.array([img]))# 显示结果
print(tf.keras.applications.mobilenet_v2.decode_predictions(predictions, top=1)[0])

以上是一些常用的图像处理库和技术的示例,可以根据需要进行选择和使用。


http://www.ppmy.cn/news/37934.html

相关文章

Linux系统一键安装最新内核并开启 BBR 脚本

本脚本适用环境 系统支持:CentOS 6,Debian 8,Ubuntu 16 虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 内存要求:≥128M 更新日期:2022 年 5 月 11 日 关于本脚本 1、本脚本已在 蓝易云 上…

PCB生产工艺流程二:图形电镀工艺流程说明

PCB生产工艺流程二:图形电镀工艺流程说明 我们以多层板的工艺流程作为PCB工艺介绍的引线,选择其中的图形电镀工艺进行流程说明,具体分为八部分进行介绍,分类及流程如下: A.内层线路(光成像工序&#xff0…

ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现

文章目录ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现一、绪论1.1 研究背景与意义1.2 国内外研究现状分析1.3 研究内容与目标1.4 研究方向和思路二、物联网技术与智能家居概述2.1 物联网技术原理与应用2.2 智能家居的概念与发展历程2.3 智能…

go自定义模板函数

自定义一个时间戳转换日期的函数 func timestampToDate(timestamp int) string {return (time.Unix(int64(timestamp), 0)).Format("2006-01-02 15:04:05") } func main() {//gin引擎r : gin.Default()//注册模板函数r.SetFuncMap(template.FuncMap{"timeToDat…

易基因:m6A mRNA甲基化修饰调控CTNNB1促进肝母细胞瘤增殖的机制研究|Mol Cancer

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2019年12月23日,国家儿童医学中心(上海)、上海交通大学医学院附属上海儿童医学中心潘秋辉教授团队在《Molecular Cancer》(IF:41.444/Q1&am…

java源码阅读 - TreeSet

往期文章 用最简单的话讲最明白的红黑树java源码阅读 - HashMap数据结构 - 堆与堆排序 文章目录往期文章一、介绍二、类的声明三、成员变量四、构造函数五、常用方法1. NavigableSet接口的实现2. SortedSet接口的实现六、总结一、介绍 在上期文章中,我们从源码层面…

【动态规划】LeetCode 312. 戳气球 --区间DP问题

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

【动力节点】王鹤SpringBoot笔记——第五章 说说Web服务

目录 第五章 说说Web服务 5.1 高效构建Web应用 5.1.1 html页面视图 5.1.2 JSON视图 5.1.3 给项目加favicon 5.2 Spring MVC 5.2.1 控制器Controller 5.2.1.1 匹配请求路径到控制器方法 5.2.1.2 RequestMapping 5.2.1.3 控制器方法参数类型与可用返回值类型 5…