QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2978

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    + v4 z5 k  d6 t% E8 h/ j

  2. ( h( ]9 b; g\" H% J# X% `* r, u, i
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))7 k1 Q9 D7 T3 Q/ B( e

  4. . U7 D6 I) |0 B& R- d* E
  5. # 增强图片
    / q7 }0 e$ D\" x\" a' w

  6. / p& I9 ?1 n* R3 ?
  7. img_enhanced = enhancer.enhance(增强系数float)4 P. g. E3 b7 H5 A% z! a9 e

  8. \" K: N( Q( w& T' W2 o# E
  9. # 输出目标文件) R6 z% Z) S/ G, Z+ l

  10. 5 @0 g3 h2 H7 X0 W
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
9 L3 Y* x& D* [; T: Z/ Z4 S7 S0 U" v. ?8 g6 j+ |
所需依赖8 y' S$ w0 d' v% s0 `
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog& z* _\" M: W: h  _9 w
  2. . e8 Q3 Y; B0 O6 @% L' S- W% G+ m
  3. # 增强
    1 z6 E' I) `\" Z( _- J; L) k$ R

  4. , C3 D  ~  t& a8 ~
  5. from PIL import Image, ImageEnhance/ I2 v& ]* I) V& d8 i

  6. 6 m7 x6 Y3 ]- h
  7. 代码实现- M1 I, a4 A2 r1 l. L

  8. & G; W+ x* q3 M- j% M+ @
  9. from tkinter import filedialog
    + n; J: D! {6 y0 s; C1 T

  10. 6 Q6 h+ K1 v# P% E5 s- @) t- E
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():! F4 ~+ I$ O1 s+ F

  2. 8 H, c& M6 H) H
  3.     file_path = filedialog.askopenfilename()
    6 F: R8 ^1 A* l) a

  4. ( C* i. y6 g, u( V' A
  5.     # 在这里添加代码,处理文件路径* n4 N0 D1 l; b0 T/ L; H, z2 B

  6. \" g, o+ }' F\" k8 V! U
  7.     print("选择的文件路径:", file_path)8 R6 V; j8 D6 d! k: n$ z
  8. 1 a2 F3 R* A% }# c( f* f) z
  9.     return file_path
复制代码

  1. 7 p! v9 d1 D: J
  2. # 打开原图像
    9 K2 O1 U) e5 |# B( H$ B, O: u- q

  3. - ]2 ~\" `\" N  v$ K( l4 J
  4. # img = Image.open('image.png')
    & R: j% F2 R4 l4 F8 D. z! U\" Q
  5. 4 I5 x6 `& x9 u' `% k/ W4 o* G; G  r
  6. filePath = open_file_dialog()7 R+ ~  `# \& B3 r3 O5 y2 t
  7. 7 e* O0 x3 Z3 U7 Y) T: U
  8. img = Image.open(filePath)
    * [# i5 ?. J4 @% u1 _  T\" N
  9. ) Y+ k4 d# i3 m& u9 O* U5 H) a0 D
  10. # 设置增强因子
    ( \* ]6 Z0 G& n) K

  11. ( n5 a2 x7 ?* ]9 U5 g
  12. factor = float(input('请输入增强系数(1.0~99.9):'))5 \' s; l/ p/ @+ w6 B' {

  13. : y$ a) L# v7 b) m
  14. 0 i+ W  R3 [  N- }+ G

  15. : a/ J, Y- [' G6 P: G
  16. enhancer = ImageEnhance.Sharpness(img)- O, g5 ^! L, `% c8 A\" \

  17. 4 T4 v# ^\" s% M7 F5 r. K
  18. - n, Z. }& v0 B6 n' C5 B: i

  19. : J# W! [6 ~+ a6 F; H
  20. # 增强图片
    $ j) E& c3 {4 J5 ^1 C
  21. 9 r9 ^8 b3 c. X0 U3 M7 R' D8 n5 G
  22. img_enhanced = enhancer.enhance(factor)! ^% v\" J7 N3 u3 ]& _3 ?, N

  23. 4 o1 p: u6 }; q7 s! h; k
  24. 1 U' L* T( h/ [; x5 W$ u8 J  E# D1 U

  25. + r& j4 ]/ {+ R/ [
  26. # 保存增强后的图像
    8 `3 C! \; Y3 Q, `2 @- |* P
  27. 6 t0 y/ W2 d7 l8 t) e2 |5 x6 i, Y
  28. arr = filePath.split('/')1 r5 ?1 g6 R& C2 q; l
  29. 0 w5 s8 l4 m1 W0 H
  30. i=0
      A4 r  S# F0 M0 x2 |

  31. ! T! i\" K2 d% t; r- H* B7 i
  32. fileDir=''
    . C\" }4 ?6 h; l0 _5 h! t  v
  33. 8 @4 E- X\" w9 X& f& ^
  34. len = len(arr)
    ( I7 l6 ?- g, b, ?/ N! O
  35. 3 ?. Z+ f7 L+ ?5 Q
  36. while i < len-1:, ~( n7 Z. U% u; k  V8 B
  37. ! l$ N3 }, b; Y$ I9 l
  38.     fileDir += arr[i]+'/'4 v  V- F- R* g4 s. a0 m
  39. + W4 L: D- S+ G: ?9 e9 x' e. M
  40.     i += 1
    $ n  X4 s' f2 _& w# e9 R, c7 T3 d$ ^
  41. # Z, ?9 h2 U: |  U

  42. ; J% R+ O4 a\" u

  43. , h0 g7 z  L! p$ |6 n6 Y
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1]); o, ?+ p4 v2 a% {: K\" V

  45.   G* Y5 _; I! @+ @7 m% T
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
) _3 z; X. [. J0 \4 s
2 b! w8 ^( N- g8 G- X增强锐度
  1. from PIL import Image, ImageEnhance
    ' u: O& D5 `6 u2 z1 K. r
  2. & [9 {( y* X. L' M/ p. p( p% t
  3. * i* r: D. n. Z' j

  4. 4 O& x5 z, J6 `2 l. o\" z
  5. # 打开图片
    9 D$ Z& {# P6 a8 ]6 k- Y

  6. , U' w! F4 P: ~4 r
  7. img = Image.open('image.png')& ~; R, s! u2 J# {6 d# j% {3 ~

  8. ; S' ^9 ^$ b% R5 C/ a, d

  9. 8 v; [/ M( ]\" x, e7 p7 Q
  10. % @7 S7 n' w2 j
  11. # 增强锐度3 Z/ r# k5 L' }+ F
  12.   P) _( a& `! N* l
  13. sharpness = ImageEnhance.Sharpness(img)' O0 ~6 b& ^' u. Q# W

  14. $ N2 Y, D. `+ z0 }, q
  15. img = sharpness.enhance(1.5)
    1 j1 u$ s& m, W+ B+ E6 Q# i; e
  16. # N& t6 Z& e- s# O! B  ]
  17. 9 v8 \6 h: [\" L' o2 Q
  18. ) _: Y4 X\" u6 e( a+ R: S
  19. # 显示图片  s/ g/ R( A- j5 `/ {1 p& `
  20. 2 e( L5 V  v) D9 s2 l; B
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    6 t3 a0 L\" I  q1 a; O+ R2 B
  2. 7 u4 u/ m6 a0 [( Y: _
  3. ; P+ z\" P$ s( x2 T) L! S/ }9 L  S
  4. $ p( v  L- U1 C3 @: I' I# |; e% q
  5. # 打开图片
    9 h& B& J3 C3 t: }$ `0 m) J

  6. ) n0 l5 j9 f3 Z4 T
  7. img = Image.open('image.png')
    - C$ l# J7 R# \0 F- a. ~! h

  8. + h7 G' `3 p* z8 _2 f$ D! |$ \; T

  9. \" M* y: U1 J5 j6 K8 l

  10. ( R) A, O+ I! {8 j
  11. # 增强对比度9 t+ _( _6 g! u$ h* M1 Z
  12. \" ~2 A, ]1 ]( \% c2 g6 o  A
  13. contrast = ImageEnhance.Contrast(img)
    - ^6 ^  R8 ]- U. G
  14. + W! N+ L- q9 E
  15. img = contrast.enhance(1.5)
    . T! v: Y7 W; V4 c- C( y

  16. . W% ^4 |: `+ Z

  17. + ]# ^' e7 o3 k\" f1 u6 I2 \4 n, h
  18. # c5 o- E4 {3 j2 G2 ?
  19. # 显示图片- c8 r- U$ E) f+ E6 l5 [& S
  20. 9 ?0 \8 L0 s# T8 b5 M8 ~
  21. img.show()
复制代码
, ~# n. M( b" D2 J: Z" F4 H
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, 2026-10-15 04:54 , Processed in 0.731102 second(s), 50 queries .

回顶部