python PIL模块的基本使用


Posted in Python onSeptember 29, 2020

PIL基本功能介绍

from PIL import Image
from PIL import ImageEnhance
 
img = Image.open(r'E:\img\f1.png')
img.show()
#图像二值化
img = img.convert('L')
# 图像放大
img = img.resize((img.width * int(3), img.height * int(4)), Image.ANTIALIAS)
# # 对比度增强
enh_con = ImageEnhance.Contrast(img)
contrast = 2
img_contrasted = enh_con.enhance(contrast)
# 亮度增强
enh_bri = ImageEnhance.Brightness(img_contrasted)
brightness = 2.5
image_brightened = enh_bri.enhance(brightness)
#色度增强
enh_col = ImageEnhance.Color(img)
color = 50
image_colored = enh_col.enhance(color)
# # 锐度增强
enh_sha = ImageEnhance.Sharpness(img)
sharpness = 2
image_sharped = enh_sha.enhance(sharpness)
image_sharped.save(r'E:\img\f22.png', dpi=(300, 300), quality=95)
# image_sharped.save(r'E:\img\f22.png')
 
# 图片汉字识别
img2 = Image.open(r'E:\img\f22.png')
code2 = pytesseract.image_to_string(img2, lang='chi_sim')
# print(code2)
# 图片裁剪
image_cro = Image.open(r'E:\img\f24.png')
image_cropped = image_cro.crop(res)
image_cropped.save(u'E:\img\\f25.png') 

对图片进行黑白化处理

img_main = Image.open(u'E:/login1.png')
img_main = img_main.convert('L')
threshold1 = 138
table1 = []
for i in range(256):
  if i < threshold1:
    table1.append(0)
  else:
    table1.append(1)
img_main = img_main.point(table1, "1")
img_main.save(u'E:/login3.png')

计算小图在大图的坐标

def get_screenxy_from_bmp(main_bmp, son_bmp):
  # 获取屏幕上匹配指定截图的坐标->(x,y,width,height)
 
  img_main = Image.open(main_bmp)
  img_main = img_main.convert('L')
  threshold1 = 138
  table1 = []
  for i in range(256):
    if i < threshold1:
      table1.append(0)
    else:
      table1.append(1)
  img_main = img_main.point(table1, "1")
 
  img_son = Image.open(son_bmp)
  img_son = img_son.convert('L')
  threshold2 = 138
  table2 = []
  for i in range(256):
    if i < threshold2:
      table2.append(0)
    else:
      table2.append(1)
  img_son = img_son.point(table2, "1")
 
  datas_a = list(img_main.getdata())
  datas_b = list(img_son.getdata())
  for i, item in enumerate(datas_a):
    if datas_b[0] == item and datas_a[i + 1] == datas_b[1]:
      yx = divmod(i, img_main.size[0])
      main_start_pos = yx[1] + yx[0] * img_main.size[0]
 
      match_test = True
      for n in range(img_son.size[1]):
        main_pos = main_start_pos + n * img_main.size[0]
        son_pos = n * img_son.size[0]
 
        if datas_b[son_pos:son_pos + img_son.size[0]] != datas_a[main_pos:main_pos + img_son.size[0]]:
          match_test = False
          break
      if match_test:
        return (yx[1], yx[0], img_son.size[0], img_son.size[1])
  return False

ImageGrab实现屏幕截图

im = ImageGrab.grab()
im.save('D:/as1.png')
 
#   # # # 参数说明
#   # # # 第一个参数 开始截图的x坐标
#   # # # 第二个参数 开始截图的y坐标
#   # # # 第三个参数 结束截图的x坐标
#   # # # 第四个参数 结束截图的y坐标
bbox = (897, 131, 930, 148)
im = ImageGrab.grab(bbox)
im.save('D:/as2.png')

以上就是python PIL模块的基本使用的详细内容,更多关于python PIL模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python命令行参数sys.argv使用示例
Jan 28 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
python如何实现反向迭代
Mar 20 Python
python3 flask实现文件上传功能
Mar 20 Python
Python使用gRPC传输协议教程
Oct 16 Python
Python清空文件并替换内容的实例
Oct 22 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
Jul 09 Python
如何用用Python将地址标记在地图上
Feb 07 Python
Python机器学习之PCA降维算法详解
May 19 Python
Python 如何实现数据库表结构同步
Sep 29 #Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 #Python
python ssh 执行shell命令的示例
Sep 29 #Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 #Python
浅析python 字典嵌套
Sep 29 #Python
详解基于Scrapy的IP代理池搭建
Sep 29 #Python
Python 创建守护进程的示例
Sep 29 #Python
You might like
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
Apache服务器无法使用的解决方法
2013/05/08 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
如何学习Python time模块
2020/06/03 Python
Python中的全局变量如何理解
2020/06/04 Python
python中time tzset()函数实例用法
2021/02/18 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
幼教个人求职信范文
2013/12/02 职场文书
品质主管的岗位职责
2013/12/04 职场文书
军训考核自我鉴定
2014/02/13 职场文书
意向书范本
2014/07/29 职场文书
初中学校对照检查材料
2014/08/19 职场文书
项目合作协议书
2014/09/23 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
检讨书格式
2015/05/07 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers