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中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
Python IDLE清空窗口的实例
Jun 25 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
Python实现快速大文件比较代码解析
Sep 04 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
pytorch 移动端部署之helloworld的使用
Oct 30 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
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
校园歌手大赛策划书
2014/01/17 职场文书
小学毕业感言150字
2014/02/05 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
openstack云计算keystone组件工作介绍
2022/04/20 Servers