QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2367|回复: 0
打印 上一主题 下一主题

三行代码实现图像画质修复,图片清晰度修复,清晰度提升python

[复制链接]
字体大小: 正常 放大

1176

主题

4

听众

2884

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    ' G! N2 p  \0 D8 j$ Z
  2. 1 @/ d/ z5 k. t& J# ^  K\" [$ g
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))3 T( I6 a  N  M0 G5 C
  4. ( K4 k0 x9 L- ~
  5. # 增强图片: n1 b2 [( z7 ~! w

  6. - H. Q9 w5 [8 J5 L! l% ]' z. o
  7. img_enhanced = enhancer.enhance(增强系数float)
    & v- f, E& Q\" ~- t

  8. - e. z; v! [1 Y9 v\" K2 O* w8 h1 F9 w
  9. # 输出目标文件* }4 E; U$ i7 G; t: y  W/ w$ M

  10. 9 x. \. ~% O4 X\" C: g7 c% _7 Z
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致2 w& W- N  B* T) q, ~

1 [0 m1 U& Q: ]+ g# z4 A所需依赖
3 u5 N8 Z8 W/ x( Z1 X# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog0 L7 m7 b! a) ~& M

  2. % b, v$ Y# O. N) f2 X( w6 U: X, \
  3. # 增强
    2 M+ D; C  f( d6 }

  4. 9 x* e1 t  }7 X4 m8 S( K$ E
  5. from PIL import Image, ImageEnhance, w# R6 I% v# A
  6. & ~7 _2 Y. ~7 E; Y\" o3 F4 @/ M
  7. 代码实现% z  @' Q1 F! V% Q& N

  8. 3 S! n( q# c. F
  9. from tkinter import filedialog
    / }) t5 E% x\" O7 y

  10. 2 s1 y\" F; e1 X/ P0 t  w$ Q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():. `, Z  x  j& h4 d' `

  2. % Y7 V9 g0 V. W& J
  3.     file_path = filedialog.askopenfilename()
    . G\" d+ G, x* f  e

  4. # c4 _4 \  a+ ^
  5.     # 在这里添加代码,处理文件路径
    5 K9 r1 i* D9 `
  6. % B- j; ]. b$ |6 U$ p& g6 M. ?
  7.     print("选择的文件路径:", file_path)
    4 L% O) S  A- p

  8. 9 i7 ~% u0 X- q; ^
  9.     return file_path
复制代码

  1. 7 l3 |( `' ^% [: G+ n
  2. # 打开原图像
    + z1 }. u3 J% [; p) e2 O' s

  3. & p$ ]) X: u# C/ ]5 M6 L/ M: g2 h
  4. # img = Image.open('image.png')1 x: W8 H1 j: v# t# z2 |8 P8 |

  5. 6 }+ O& w& ^\" @\" u5 Q2 A$ O
  6. filePath = open_file_dialog()
    0 t4 Q& }; C3 u

  7. 8 {/ V$ b1 Y2 E) z. C6 e9 j
  8. img = Image.open(filePath)
      I9 ^$ U) ~# y$ U8 o3 k, D' z

  9. % Z, X$ B+ \% \9 J
  10. # 设置增强因子# W4 n2 `3 M0 c2 ^( n2 ?

  11. 7 a' B' d+ M$ @! o. D\" T& y' d+ c
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    \" H6 q! B! g# y( ^

  13. ) P\" W; b' B. ?2 Q6 X

  14. ( E! q5 Y# \\" k% r/ P5 g

  15. ; U& f1 z7 x; B/ X7 h6 M% A# W! |
  16. enhancer = ImageEnhance.Sharpness(img)5 o4 ^- Z1 p& p. e! M# @/ x

  17. & {7 _4 \# F8 G. K7 {$ }

  18. 1 V5 N/ f2 }4 p

  19. 7 l7 ?6 q7 [- `, F( o% o4 B
  20. # 增强图片
    + y( a. ?( R1 V: P! A' y0 {
  21.   y* i* t9 ?0 V6 D% x
  22. img_enhanced = enhancer.enhance(factor)
    ; e+ Z5 n2 X+ Y, A9 |
  23. 1 n\" T! ~2 `( j) t* z6 b

  24. \" B1 s$ q. T  t- p; j$ t/ T

  25. * m7 V5 a* k6 K  g# }, Q1 \# J
  26. # 保存增强后的图像0 w8 p6 n& w\" u. z$ J
  27. . z# l5 m6 W- C) X4 |. z# I3 B
  28. arr = filePath.split('/')
    3 S& |4 I* r3 H7 D* e
  29. 8 A/ ]7 w1 b- r/ r. E
  30. i=0: N& k7 I% }; Z3 T
  31. + l( a+ G: ?: V
  32. fileDir=''
    3 p\" D6 q3 _0 B# C; Q! i
  33. 1 [% b, m1 O\" `+ R3 {9 I* m2 ]4 |\" R
  34. len = len(arr)6 l! U1 V) U( J/ X) E. h; I
  35. ( ]/ g0 ]3 H8 g0 g$ k. O
  36. while i < len-1:
    , I, Q2 [# N5 n8 A1 w* k

  37. \" T) k! a' G0 G$ K9 k
  38.     fileDir += arr[i]+'/'
    2 b/ x3 n$ F& g. j& l2 ~5 T8 Y7 t. X

  39. ' q+ @\" N$ E9 h; O6 F
  40.     i += 19 L\" t2 ]6 ?' F* K# ]

  41. . y\" @* T' {! {4 `' L6 n

  42. + V' |: |8 E/ O6 {3 C: B3 j& e

  43. 6 |, i+ j9 @5 m+ i0 X
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    : {. {9 j. H4 j8 S3 w4 b4 l& i
  45. , c1 |& Z) Y, L3 @
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:7 P+ C  q2 f' ^
7 s3 q" q3 M( W0 K& e( }# S
增强锐度
  1. from PIL import Image, ImageEnhance
      v& l2 \6 j0 C6 i# [6 s9 }' z

  2. / ~* A7 z/ e( g2 K$ p
  3. / d* R  r+ Q- c8 D\" _\" J
  4.   E; Y  c5 a8 J9 R
  5. # 打开图片
    6 J3 l) i9 M& _, E7 \$ c

  6. 9 f) j4 v; z- y: E7 {
  7. img = Image.open('image.png')
    . `/ p2 O9 i9 E$ w# b( F* M4 E
  8. 8 c& i' H4 S' R6 f9 I
  9. , c1 e\" r3 z. p/ Q

  10. 7 i0 ?1 ?( [6 P$ N: P2 E/ Q* K- n
  11. # 增强锐度% A& j, J9 Y' O

  12. 4 z# f$ O* _) V1 {
  13. sharpness = ImageEnhance.Sharpness(img)
    & T0 k; B9 U* L
  14. 6 e# [' h& t. E7 p  I2 ^
  15. img = sharpness.enhance(1.5)
      L4 ?2 L! W7 {/ a! T$ @

  16. # q' {0 @) x: T/ a& j( W1 Y

  17. . E\" H6 `3 u* I$ w\" w

  18. 0 q: \, [% Y, A/ \; X4 o, Z
  19. # 显示图片* i2 Y! L8 g( I; N: ^# I
  20. & ]- j: Y* P- o) `! M
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance/ u: x! {6 L1 n/ o$ E) y9 C
  2. ! I3 K% }7 G0 Q3 `8 b0 _$ Z0 V

  3. - M  v, Y1 o& H- ?0 e\" z
  4. $ I8 A: Q$ w& X+ j
  5. # 打开图片# a0 {6 y7 D) s( `

  6. ! M5 r% ^! Q5 T4 `\" ^
  7. img = Image.open('image.png')  O5 M4 }  ^0 d1 ?/ b  c4 h, P
  8. ) Z; f+ _$ [9 G\" s9 k5 b
  9. . ]+ A0 A! v+ x\" a% O\" z! f
  10. * K# `* w2 W3 [+ t0 ~, e
  11. # 增强对比度
    1 O/ ~, T! f; [8 g  ~2 y
  12. 7 a\" F5 f$ v+ ~
  13. contrast = ImageEnhance.Contrast(img). A\" c/ N5 |+ J& I! |

  14. 3 C! z/ R: M. z3 D3 R+ ~/ l& O
  15. img = contrast.enhance(1.5)
    0 Y# y9 w( s) f9 W1 J5 ~* b: u

  16. ( d$ ]9 p( ^& [% x9 \+ Y; t
  17. 1 g\" i. z( A! h% f) k
  18. $ X( A& p/ V3 p9 j; f7 x
  19. # 显示图片
    ( \( T: m( V8 E; G& n
  20. \" V6 T0 X8 r7 g3 T; e- O) i
  21. img.show()
复制代码

6 @2 D, V2 P% U
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-9-22 20:18 , Processed in 0.792386 second(s), 50 queries .

回顶部