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自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
浅谈python 里面的单下划线与双下划线的区别
Dec 01 Python
python实现excel读写数据
Mar 02 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
jupyter notebook 多行输出实例
Apr 09 Python
浅谈Python 函数式编程
Jun 20 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 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
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
一个实用的php验证码类
2017/07/06 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
python中self原理实例分析
2015/04/30 Python
Python二分法搜索算法实例分析
2015/05/11 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
python放大图片和画方格实现算法
2018/03/30 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python 实现线程之间的通信示例
2020/02/14 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python 递归相关知识总结
2021/03/03 Python
Linux的主要特性
2016/09/03 面试题
优秀女职工事迹材料
2014/02/06 职场文书
土建施工员岗位职责
2014/07/16 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
意向协议书
2015/01/27 职场文书
企业工会工作总结2015
2015/05/13 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis