数学建模社区-数学中国

标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python [打印本页]

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件
    : H7 ]" a, T4 ^- K. Y" v) Q
  2. ! b3 q  w  }, ]' N% l' ^
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    3 k3 }- j6 ^, Q6 u' `3 x

  4. % B- C, J5 C1 Q9 p& y
  5. # 增强图片
    5 u; N# P( |! G, N4 Y( W( a) w

  6. - F, }' l4 y7 g
  7. img_enhanced = enhancer.enhance(增强系数float)7 C; c: r- h  \

  8. 3 M% [5 S3 a: e  z$ p( J4 ^5 L
  9. # 输出目标文件6 r& G7 B2 ~" d+ r0 J9 a1 m. H+ X# y

  10. " N0 y- n8 g! I' f$ v
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
3 t% S: q  M: |$ B% z3 ]0 n( e" `5 U
所需依赖
! W$ F5 i% }3 c1 R" e# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog% f- I& v  ]+ M3 |2 f. ~$ F

  2. & S7 X2 j+ y6 E  ^7 e# F
  3. # 增强' L9 P# v" H) ^2 y# O3 t- g

  4. 2 H3 W, I, C4 L0 a# q7 X. v9 q# h2 j
  5. from PIL import Image, ImageEnhance
    6 g  z5 l2 H3 v2 l4 @3 b
  6. 1 ^( G. V, B& |+ Z9 D
  7. 代码实现% t% _0 r0 Y& d9 w+ {' w

  8. 5 z: p6 O" m5 @+ [6 X( J* e
  9. from tkinter import filedialog. @6 H2 K/ a+ P6 b/ V( v3 Q+ C

  10. ( y% f. g0 f- P2 |7 ]2 q- b+ I( M
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    7 L0 }+ V- j% o8 C' u* z" M3 R
  2. 4 W8 Q$ F) @8 t& A7 t% [% n9 y& v
  3.     file_path = filedialog.askopenfilename()
    + g3 a8 J" l8 J9 P3 m/ @+ q

  4. , P8 j! U* w3 V. G
  5.     # 在这里添加代码,处理文件路径
    9 L8 F, M5 N! O2 h- ?3 C0 K+ c3 G
  6. ( f6 x- L- _& d# m! [6 ^
  7.     print("选择的文件路径:", file_path)2 ^" [% g- B, e, g+ q, L& W
  8. 0 l& i/ M7 T3 a: D9 I4 N
  9.     return file_path
复制代码
  1. 9 O1 W9 b  i9 j/ x
  2. # 打开原图像
    7 f4 x6 p% h$ f' \

  3. 4 h' @, c) u. c' \# G
  4. # img = Image.open('image.png')
    1 F2 ]$ e% z8 [& n# o
  5. 1 Y6 |0 n0 a- |" @2 S+ S6 m+ K
  6. filePath = open_file_dialog()
    . z: a- t' s) g' g

  7. 2 F' k! x: w  @0 _: r) T. n
  8. img = Image.open(filePath)- t4 ]* n( H& ^" Z' k7 I& x

  9. / I1 P+ x+ ]- o- p
  10. # 设置增强因子
    4 V1 f# N8 e. N- V/ n; l- ]) S

  11. 4 h% O6 k' [; c
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
      Y- V- l* K' ]6 l' f! r3 D1 K( C
  13. ; e1 G; c' \: ]6 ~

  14. - V3 `6 L- o4 g( ]3 K- u( T

  15. / o/ w, w* G; Q) Y; F+ G
  16. enhancer = ImageEnhance.Sharpness(img)5 ]1 H% [+ E' }

  17. ; c3 y" ]$ u1 Y  I

  18. . X6 R/ k4 R+ b
  19. , u9 h6 [: B; X3 i9 [- Z
  20. # 增强图片
    : U4 H$ g0 t- v+ r* Q- h
  21. & G& O0 f6 q- B
  22. img_enhanced = enhancer.enhance(factor)
      v* p& z( k4 }' U: z

  23. 1 A. o2 C$ b7 X: k9 h3 V' ]. G/ ]
  24. 9 v; D5 F' Z. A- ^  j

  25. 4 K" y' W" V9 o% G3 B6 W5 \
  26. # 保存增强后的图像: A+ ?& L7 P# K- O

  27. 6 N% o: U+ G- W( @, G! c6 n
  28. arr = filePath.split('/')
    6 a  X+ m7 S! |, e; A/ N
  29.   d3 k1 `, h% e7 i; s) V
  30. i=0+ n) D  h+ ~2 _. g: [
  31. % k) ^! H# Y) O( T: b+ }% M) |
  32. fileDir=''
      Q, F+ _/ V; S
  33. - ~3 X2 \& R; l- x/ C3 M/ p  ?
  34. len = len(arr)  P, p5 h/ b! V: S; d5 Y6 Y7 g' r7 G
  35. 9 m9 D- G4 x3 Z! v  G8 |
  36. while i < len-1:
    0 u5 S, E1 m" |$ |

  37. , N) B/ B, p" K- q
  38.     fileDir += arr[i]+'/'
    - p$ T2 Q7 |  u' U  |# ]
  39. , b  i- x6 Q$ J4 \
  40.     i += 19 \% J4 F9 F/ @! p' H' m

  41. - Z* v% e" x( ^2 l- f8 _7 y
  42. 5 W+ V+ F& v5 O' o! ^8 g9 U- c
  43. : A) ^7 r. a* s/ @9 L8 H
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    ' r6 y' ~' H5 E+ h
  45. , N7 R# d" S( v/ y$ |" k; c
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:5 [# M, S3 q4 `. `
* a  f' H6 R% H: K9 J* l
增强锐度
  1. from PIL import Image, ImageEnhance
    " R, f3 d2 [4 Z0 K- i
  2. & r, ^; `; Z  X, K

  3. # K2 c0 c! s, k! U
  4. * T# V# [5 V, Z: y
  5. # 打开图片
    / A& T7 m9 H7 A. B; b
  6. / s2 P. I0 J; |& q" D
  7. img = Image.open('image.png')
    3 a$ \/ V. F! h' h% d, s( @; N. K9 v
  8. . D4 N1 c; k! V( q7 v1 k

  9. ' ~- Q# ^& x- ^" d6 J3 ^3 |
  10. 4 W; C( ]" @5 t# g
  11. # 增强锐度
    3 J  l! j8 n1 p: U1 J

  12. ' t/ O: |; D. ?/ x9 }
  13. sharpness = ImageEnhance.Sharpness(img)
    " j. g1 K" H3 [! P7 t
  14. / L2 }8 y( }* N$ {! J& O6 }
  15. img = sharpness.enhance(1.5)
    - w, h8 n' z9 F0 }+ z# D9 E: i- B

  16. 4 p( |% s. N8 A; a5 q, \& `
  17. 3 ~$ ]# k3 a. h/ K9 }, X' h
  18. 0 T9 T1 K+ ]" ^9 o6 ~- `
  19. # 显示图片' V7 T) P( U* r3 G" o
  20. ' u+ X, u: b: V
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    : a+ v) g$ }3 B9 @; y8 O

  2. - \8 W+ ?# u" E2 S' e/ v! s

  3. ( _. ], S2 R/ p* ?9 M

  4. 5 e& d0 _9 I" d! r2 u( a
  5. # 打开图片& ?6 O7 `; z  \! |$ ?- H! ?' q, A# v$ i

  6. : d  B; F) x" N3 a- ]* p
  7. img = Image.open('image.png')
    % L- _: y2 l/ j6 ~$ e  j6 q' o

  8.   U1 x! d0 C9 V1 f' B; Z

  9. 2 z; _+ B* Q) c. Y2 E% O4 c

  10. 0 V0 Y* [4 A& [/ }
  11. # 增强对比度
    5 X% F2 Z- S" Q0 d' X' D4 Q
  12. $ Q0 a8 x+ D/ @& q3 Q! ]
  13. contrast = ImageEnhance.Contrast(img)' S& B& W. B3 Y6 ]5 Q

  14. * O; b8 Z: l0 l
  15. img = contrast.enhance(1.5)
    3 X7 s# F% v. u  t; O

  16. ' k2 V" M; n3 F  L. ?$ ^9 q
  17. 3 e" g8 Y& u$ M+ R1 m# E

  18. - m1 @! c  K& _9 o! v* K
  19. # 显示图片
    - o* T0 L/ W& t; }0 i. G: }4 |
  20. 5 ?/ a% B# L' u) s3 |, ?
  21. img.show()
复制代码
4 `9 W* L2 b1 A& q8 F3 a9 N) d





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5