QQ登录

只需要一步,快速开始

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

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

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件; |0 j+ |* w+ ~; n1 T

  2. + j8 S3 k% [8 f1 b7 `! S
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))9 S9 ?/ C7 ]\" t( R
  4. ! V* N+ ?) ~9 @$ m
  5. # 增强图片! b* G7 i) {8 v\" H; W; v' h9 z
  6. 9 m) Y9 Y1 E; w+ o5 I
  7. img_enhanced = enhancer.enhance(增强系数float)
    / |\" V2 }% z# o\" i' x) E\" a  F
  8. 1 s\" L* @2 R  y/ `1 \$ `
  9. # 输出目标文件
    8 [5 H5 b7 P- f\" a* l2 j& Y7 w

  10. 9 K* U0 j+ Z9 {0 M0 E7 J% |
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
0 ^" l" l" O% ~" J7 r4 J' r% v+ Z. h9 X8 Y
所需依赖  [, x9 V! X4 S/ U! \" D+ z
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog+ M* j. q* [3 ~& E. ^# R
  2. \" `0 w; J/ _, J6 g
  3. # 增强
    ) q1 f' M( V7 b( F3 n/ ^( k- d

  4. 8 I& f. C% b- j$ F. y; e
  5. from PIL import Image, ImageEnhance
    0 S$ F4 `\" s- g# a) J  b  @

  6. ( F7 B4 B& b3 N9 ~, b
  7. 代码实现
    4 a# L: a' U: I, X
  8. 0 l- ~5 S/ \\" I5 k6 S( P! r: f
  9. from tkinter import filedialog
    8 k6 r* B: N- a  S! Q: _5 v4 q

  10. 4 ^9 {+ E) T' E
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    $ Q. h9 ]% `6 B$ {
  2.   Y: J2 ~0 m! L: t0 v/ p& B* V
  3.     file_path = filedialog.askopenfilename()2 F+ h+ b, B' M' R$ f9 E% v8 _

  4. & t# x# o' a\" ?5 ]8 _+ C$ }
  5.     # 在这里添加代码,处理文件路径
    8 k* J7 O% k1 U& ]) {' B

  6. \" T4 d, |( S  T
  7.     print("选择的文件路径:", file_path)
    $ [4 L. ]8 L4 h) A7 d* J

  8. % b2 n5 C7 k) I5 b& y
  9.     return file_path
复制代码
  1.   Z  ]; e) P! P$ l; X5 N( V0 R$ a+ q\" T
  2. # 打开原图像
    ; |, J9 F9 e9 O5 Q! i
  3. # Q; g6 Z- g% I2 _6 z2 h
  4. # img = Image.open('image.png')
    - `* d  P% m5 Y' \  ~

  5. 8 x+ j1 Y$ ~6 J6 g6 _# ~% F5 [
  6. filePath = open_file_dialog()
    % ?& T; R- c; w4 ~$ r
  7. 1 S9 s' I! |) s( D7 q( \
  8. img = Image.open(filePath)3 ^$ {! y6 z& \$ z+ Q9 Y* n1 z
  9. % L: S5 I  D; Y: X\" W  b( [  h
  10. # 设置增强因子$ X! W, c0 o  v  N
  11.   S* t$ G\" B3 U, b4 h9 \6 E) M1 `. s
  12. factor = float(input('请输入增强系数(1.0~99.9):'))$ E1 Q\" u\" _, ~/ V! d; K% c
  13. : d: e2 I# a, l; Z+ t* T7 v$ o
  14. ! O/ m8 R: }7 f  T( R- [
  15. 6 P  @2 W9 |. T1 G( ]( {
  16. enhancer = ImageEnhance.Sharpness(img)/ ]4 T9 W2 x1 |; `% S/ E) f2 S% V+ e5 w
  17. ) z( p3 l0 C( S# J

  18. ) y& j6 L+ l3 L
  19. ( f0 v- H/ R9 z/ k2 p+ ~) U0 ]
  20. # 增强图片# o/ P' g5 Y0 @4 C\" b; ]+ D  L

  21. 3 N' d2 g1 q; ]7 W. _
  22. img_enhanced = enhancer.enhance(factor)
      L* P( O& a) k+ v( D: J3 y

  23. : g6 ], M' X% e) p3 ~0 a
  24. ; e\" w4 X* ]! ]5 @0 `7 B! |! }
  25. % b( c4 a: B4 b0 O1 v& q
  26. # 保存增强后的图像; y& N  W7 Q% C2 B! X; F

  27. ! l/ S5 e5 i6 \
  28. arr = filePath.split('/')
    & c8 f# y: n8 L% _
  29. & [% m8 A9 l, L/ h. f1 s& o2 ~
  30. i=09 O9 @% }1 s, L  K\" Q1 s
  31. ! U# p+ Z2 m! R; S. Q. b  k\" e/ _
  32. fileDir=''
    4 D\" f- M6 f0 r  c% M0 A

  33. + X+ {5 r) ~2 v. N1 l8 M$ ~1 E: C
  34. len = len(arr)& ~( B+ p5 B- M& h7 d; Y: b; {

  35. 2 l$ v9 ]  J+ ~; U- v
  36. while i < len-1:
    + c4 g/ L0 L7 Z% e, L

  37. * g6 l\" U1 s/ H7 \1 p; z) ?
  38.     fileDir += arr[i]+'/'! ?. x/ d5 U9 i: O( `) T9 x
  39. : n\" O  O4 l2 ]1 k7 R% I
  40.     i += 1
    9 ]6 I/ E9 k( x5 [9 x' g) l
  41. 9 N% p+ H2 W5 K! X8 K

  42. ! h; d/ b* w& f* u3 u\" q$ H
  43. - g$ J) |: s! t) f
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])5 \. C$ f. \( [0 b* }

  45. 4 k4 d( f7 s! i
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
) h$ V% ?. w" [  `8 k( l: j
  e. K7 L3 t0 R9 K' r  h7 @增强锐度
  1. from PIL import Image, ImageEnhance
    & r. d0 k8 m. Y0 ~0 d+ K
  2. ' D7 Q& ]2 D* D
  3. ; M3 m3 g0 F# t# y/ Q

  4. % J! v% E5 V8 u
  5. # 打开图片
    . m) h9 I4 \* B7 B9 f! I% ^
  6. / n# f( |# W4 m. W( f1 E9 I
  7. img = Image.open('image.png')5 g4 H4 ?+ f# Z. h

  8. . U8 f9 B( f* y! `: p' C, v! L

  9. & W: B1 H; \; e; C$ c* G( b5 f) y

  10. 1 o) @, ~. B( Y/ Z+ r( @
  11. # 增强锐度) r: H0 y# q+ p\" e# k: Z. N
  12. : p( N7 H& [( J7 n3 B5 Z+ r
  13. sharpness = ImageEnhance.Sharpness(img)
    # P1 t2 R5 z\" ~/ T4 F9 }

  14. / Q. I# z& R0 B3 x; o
  15. img = sharpness.enhance(1.5)
    6 \1 Z8 p' n3 L+ Q8 G  P' A
  16. / T8 J. ]/ f5 q3 e' x* m: c. h4 j
  17. , D9 y/ ?! A) {  V$ [! ^

  18. ) c0 D% n. R. t\" I2 N) N
  19. # 显示图片
    , F$ k) V, W: D6 _- u: P: E* r' S
  20. : V5 {$ g+ E2 n\" d* R
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    : |& r3 ]\" E% N2 n6 O3 l

  2. , B\" Z  f6 j) f\" y\" [: ^- y
  3. # |5 B2 p5 |  e. r\" U

  4.   I: L9 m( V9 }\" ^. m% W# o
  5. # 打开图片: @2 S, L' ?2 H- j

  6. 0 S3 d$ w' L: P
  7. img = Image.open('image.png')
    * _; t5 X0 J' V) p' V$ I

  8. 7 w& m4 \8 y8 S5 J* z- Y- N$ w8 F
  9. \" G: j3 p0 l6 F$ P, V5 c: d

  10. # Z4 D, i7 X5 T7 o0 k+ n- Q- x
  11. # 增强对比度
    6 V5 y- h: H) G% n# W$ @0 F- I

  12. 5 e' s) A! h1 Q2 }% ]- a\" K3 O5 v
  13. contrast = ImageEnhance.Contrast(img)% C9 x  ^/ X: o2 s( P, S6 z
  14. 4 @# K+ [8 g5 y\" E/ d' I, Y
  15. img = contrast.enhance(1.5)
    & s8 b# Q& `* B# E

  16. + k$ z) O; o, _5 \
  17. \" Y! p3 p/ d  F4 b# l+ [
  18. / i6 p8 N6 m8 Q4 H* M$ n
  19. # 显示图片* o0 ^# f2 u% X, h
  20. 3 Z4 a0 D# G; w7 J1 x
  21. img.show()
复制代码

3 m6 W1 q4 L1 p& 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-5-26 00:15 , Processed in 0.310542 second(s), 51 queries .

回顶部