QQ登录

只需要一步,快速开始

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

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

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    $ i& y# c6 L3 x& Q  n* [1 k
  2. - R- T0 s- ?+ I3 M$ D; P! m\" @
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    : W! ~7 k4 W3 }, N; U& j

  4. 5 ]9 V+ C6 Z( C$ Q, k* G; f- w
  5. # 增强图片
    5 c- S+ u1 ?1 P! U: E

  6. 7 E/ r# p4 d; x: L8 P
  7. img_enhanced = enhancer.enhance(增强系数float)
    ! d, U/ @6 J6 k0 g6 w3 z) T  [7 h& d/ _
  8.   I% }2 ^) V* Y: N8 I: z
  9. # 输出目标文件
    1 u' r6 s7 M% A; h\" x0 {' [
  10.   Q1 Z* k2 i- f; v- d& h5 Q) _
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致2 \9 R$ s' U5 K# s7 F  }) V! Q' h% r

" ^! R8 U! a' |! ^3 }所需依赖
. J6 S5 }6 Y" x2 }* C7 Z4 |$ M# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    ' ^- f8 V- R6 j0 _/ Y& ~

  2. $ i9 X2 w# B6 {# q5 D! Y& Q\" Z\" {
  3. # 增强+ a, L% Y. i' G

  4. 5 O1 i7 K\" m. w
  5. from PIL import Image, ImageEnhance
    9 n, V$ _8 H1 [- T! F+ K

  6. 3 |! E7 W, e. F* F! }# [2 o& d
  7. 代码实现
    ; j3 d! O6 K1 s0 w$ U\" }. K\" S0 k
  8. 9 M9 s, I5 q3 s0 F
  9. from tkinter import filedialog8 W2 L3 t3 D9 W& h: l6 m  U7 T

  10. + {. Z! \  t) g! r- A+ M! E4 ^4 {
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    & t1 m: ]! r\" {
  2. 2 b6 z$ O' v' r& l
  3.     file_path = filedialog.askopenfilename(), }& J! w2 i% @$ P: n3 q# j
  4. % O. w3 N7 Q3 I2 g6 Q4 _3 H6 j6 B
  5.     # 在这里添加代码,处理文件路径2 G( V- b+ R\" u& ~' i\" J
  6. 4 N7 x0 m! q! W3 Z, ~7 w5 N
  7.     print("选择的文件路径:", file_path)
    0 S$ d  J  K: i# Z' `6 m5 `7 X) p

  8. ' w$ l: [; s4 n! ]2 u
  9.     return file_path
复制代码
  1. ! r1 `- r: V! X+ P1 |& E
  2. # 打开原图像6 x& A4 u/ }' ]

  3. : |, M. U& M2 |9 h% {
  4. # img = Image.open('image.png')8 N! V, L- M* y% n

  5. - p/ v( ]\" L, k/ r' i: j4 Q, e
  6. filePath = open_file_dialog()
    5 J+ d8 R+ Q' X, a

  7. ) X' `6 P  t& G' k6 f- m
  8. img = Image.open(filePath), f4 z1 b% u0 }
  9. ' h7 C5 h' I$ n1 T
  10. # 设置增强因子  X, c6 m! u! z5 y4 X$ v

  11. 8 e: |, m4 z6 {( S2 B
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    & u* w# _8 L8 a\" j# B# l
  13. 6 Z* i# _1 k  E4 Y0 A: a, Q/ [3 I

  14. 2 G9 W' ~/ t, X  V% o

  15. 7 x. R3 n0 R. k) P
  16. enhancer = ImageEnhance.Sharpness(img)$ E  l\" |6 V2 a6 X% J8 t4 ^) ^

  17. 5 d) W8 m0 Z$ E\" r

  18. 2 i2 l: V( a4 D$ d

  19. * f\" Q& m  E3 `0 P7 h# _
  20. # 增强图片
    3 r% x) y* o% H3 t$ d- `

  21. / Z9 V1 ~( i3 {+ @5 ]
  22. img_enhanced = enhancer.enhance(factor)6 L0 M  e/ |/ k6 q

  23. 4 K! W% x0 ]\" P0 }

  24. / c5 ?7 g) ]& S& p0 \& l1 j+ ^0 Y
  25. + J4 w- R4 a( A
  26. # 保存增强后的图像\" D8 J# O4 K% j4 |# k
  27. % `1 |6 Y) k' O  J: k0 N$ L, @. q
  28. arr = filePath.split('/')& `0 ^/ c- v( ^( _
  29. $ X) S0 E' G  D7 k
  30. i=0
    # Y% J0 s8 Y2 T! I' {
  31. ) s  G; k2 q9 z( B& w4 F9 X
  32. fileDir=''
    6 d* l% J! ~! X2 h( ?' ^, Z
  33. & A* h0 E. X5 ~. ?4 i/ e* {2 `
  34. len = len(arr)8 b7 \5 Q- p, h5 I% E  ]- F/ C- `
  35. 9 M$ f7 \, @& s6 P. ~' o, e( o
  36. while i < len-1:# B; G# A6 t8 ~2 y
  37. ) h  r1 _\" j+ B# w. l
  38.     fileDir += arr[i]+'/'
    8 M+ ^: C- {$ {! g

  39. 4 I5 A+ M* A* ?# C# n, f
  40.     i += 1
    # t/ }  f1 e/ \4 @( U

  41. : y& ~+ j1 {1 T0 v% s8 u/ A4 r: e
  42.   n3 R! ]6 ~( X6 d
  43. \" @& I4 O: G0 W& F- m1 C
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])# C4 s6 s, }9 L% R9 o# g7 |; r) v; O

  45. + f2 J- {4 y& U\" }
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:/ G3 z* u4 e- `# Y, K) W
2 E  w' `8 x. v; G6 Q
增强锐度
  1. from PIL import Image, ImageEnhance
    \" x2 r4 z: R+ h; k  Y4 j

  2. 3 s5 E\" ]0 p; z5 D3 B, ?! K! }  J7 ^1 Q

  3. ) A- @4 j+ `* s# |3 D3 C& R
  4. 5 l4 [  F; d( P9 r7 W
  5. # 打开图片
    3 {- S; l* A. V\" I9 Q
  6. # B) X7 Z+ N, t
  7. img = Image.open('image.png')\" B, M* }. L4 S/ }2 I
  8. 5 G+ N2 f3 R/ r5 M  I

  9. 9 O+ {% i5 e6 w& p8 @
  10. 0 E$ d3 m0 Q8 ~8 T' w1 ]! k- x# h
  11. # 增强锐度1 {5 K1 n- c# j; D5 c1 \* N# ~% z

  12. \" y9 h/ Q% [9 @7 R& G+ G4 z
  13. sharpness = ImageEnhance.Sharpness(img)
    8 H& _. }9 S1 {5 Y2 ]5 N
  14. ! m# l# n7 G\" s3 Y. {
  15. img = sharpness.enhance(1.5)! I, W2 a% u* _' u% T+ v
  16. 8 B  `, n& |, U' _+ O; S. V! k
  17. \" I& u4 Z+ \; H+ u* w3 k# B# K

  18. 5 w; s/ t. ]$ @\" c2 E# l
  19. # 显示图片
    9 `1 s3 z1 {: X+ P1 O/ K& Y
  20. 1 S* L# J\" [% i& G: y+ G
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance6 M  @; P2 Q. u
  2. 6 i9 H$ [3 I2 x# c

  3. 8 p# Y3 x0 `( u5 ~\" K! N4 v
  4. 4 h8 l/ f8 U9 a/ l
  5. # 打开图片. @6 D) ^, {7 x1 d9 ?' R: S

  6. * ~; s2 c, K$ ]1 F3 R3 Y9 O3 Q
  7. img = Image.open('image.png')
    7 B+ d& B  j6 V+ m- J
  8. 8 s* `, u& c6 N

  9. # H; y$ L1 ?, N2 b4 \) ^
  10. 1 D4 E7 U6 K\" z+ m; y6 m
  11. # 增强对比度: R! `* o# W) |  I
  12. 9 d' N6 l8 B1 b  U1 z7 P
  13. contrast = ImageEnhance.Contrast(img)+ l\" [6 J0 ?1 s* D  K
  14. - O) c; m& H5 L3 X+ r
  15. img = contrast.enhance(1.5)4 k( D5 C: `7 \
  16. 1 Y1 x! f2 n- `( r) @

  17. $ G+ `  D0 x8 m. [4 a* z
  18.   h* L/ r3 y' ~# k
  19. # 显示图片1 e- g8 B% h8 X8 `/ u
  20. 8 v. a4 L: {( q
  21. img.show()
复制代码

  ?* b& L3 ]* ]# `4 u( T
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-8-25 20:03 , Processed in 0.894180 second(s), 51 queries .

回顶部