数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件: @8 m! ^6 v8 F: l& F8 A
  2. 0 X* v* O9 T. l5 t* G
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))6 b, w# t9 h1 ?2 r
  4. 7 h4 g  z) y7 j& R
  5. # 增强图片  K1 {1 ]: ?! f3 P" ^) [

  6. ; r  y- V+ _0 x5 r  l: w
  7. img_enhanced = enhancer.enhance(增强系数float)6 [. O; H1 [: g1 _( n# u+ R, T6 R
  8. ( l4 ~6 v( t* S; r
  9. # 输出目标文件: q  a$ W: c/ E! d

  10. + a  p( C5 u/ B2 J0 d9 l" v
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致  N: e% v& c. Y0 u" d
2 c' j0 m9 C6 b: [+ L
所需依赖% v+ h8 @; x$ `, k3 y! g# w
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    6 u. E6 W, H7 `0 i! T

  2. + h4 G# W( O! c- A" V" O# B
  3. # 增强
    ) a) w" C& N- U1 D7 m. j) h* v

  4. / W* k% e9 J% {: [- [( M
  5. from PIL import Image, ImageEnhance
      j# F5 x3 ?. y$ _

  6. " V) i, D3 v" ]
  7. 代码实现
    8 J5 O0 `( F9 L- g- {# m
  8. - L: y% h' o! E) v: T7 T
  9. from tkinter import filedialog
    0 {# u5 q! y" ~; y. ?( _; h/ P+ B

  10. 2 A. J. u: n$ g  m7 u
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():2 d( r9 `8 i8 H7 _
  2. 8 O1 k% E) G2 z: h3 q
  3.     file_path = filedialog.askopenfilename()$ S0 L8 R  i- R. w2 i" Y
  4. - Q, o) B' B, k1 I; g
  5.     # 在这里添加代码,处理文件路径! P; f5 v5 Q9 k6 J  h
  6. ' {3 B, `: w) r6 b2 w5 j
  7.     print("选择的文件路径:", file_path)4 {: H+ {  b4 u7 e+ N8 w7 [; Y

  8. ; R; g$ z% U: l( T, w, K
  9.     return file_path
复制代码
  1. ; Y! z; J4 N) O2 S$ i6 c
  2. # 打开原图像
    - V4 w% @$ \- F( Y

  3. 6 d& f" `0 [. K0 R* d9 f' I! D5 v
  4. # img = Image.open('image.png')
    % ^0 K2 w6 L2 V4 C, N/ l: |
  5. / i8 g6 k" T. S# Q( J+ F+ A
  6. filePath = open_file_dialog()! e: l4 t5 S+ w" ]& n3 G+ A
  7. ( ]0 Q* L  N) T% p: @9 L
  8. img = Image.open(filePath)
    5 v0 y0 J% d: I4 i
  9. 1 L; n8 t7 }/ W3 L
  10. # 设置增强因子7 x) j9 X5 k  {

  11. + D9 W. ~  F: a+ Q
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    6 C2 k4 n* m' [6 E; j8 n7 j

  13. ' q- \" V6 I% B: P" n3 D3 }
  14. 2 V9 t0 Y. Q8 \+ l) f! I9 N
  15. ' }6 b. O" P$ N: y! r, M2 f
  16. enhancer = ImageEnhance.Sharpness(img)6 Y' P; ]. B# V; b9 E7 W
  17. & N0 f) T2 X" a0 T5 \
  18. * g6 o* k& A$ w8 V

  19. / v! K# \+ k% g0 e6 \* Q3 Q6 y
  20. # 增强图片
    4 ^- \5 }1 `, ^. P  f4 {8 c
  21. % J5 {6 S  p0 q
  22. img_enhanced = enhancer.enhance(factor)& D5 i) l" K3 u( o+ Q

  23.   F: ]6 B: Y8 U: _" ?9 G
  24. 9 U5 g$ |& k. y/ ?7 S8 C0 J

  25. . s, T- u' x$ S; C% q
  26. # 保存增强后的图像0 ], D2 Q, M% ?& f
  27. + M- Q. _" T0 F
  28. arr = filePath.split('/')
    & Y( r/ x) G% a2 L5 {. w
  29. % X4 f4 b' \+ q8 I! N
  30. i=0( I0 D& B3 A/ l; U
  31. 1 y( h0 \1 n3 n$ i0 ?% U
  32. fileDir=''
    8 T/ F6 z# Q( i% M* _
  33. ' l  N4 c2 [7 ^, e" \8 |& _
  34. len = len(arr)3 H' l* U& H" C+ C: c* {* H. T
  35. 9 E: _6 ?8 h( g" o) J% B
  36. while i < len-1:
    6 E2 b& ?# i. K8 `

  37. + ^" O' A8 O8 [4 c& F6 m5 Y2 }
  38.     fileDir += arr[i]+'/'
    8 t- b- B" f/ H* R$ c+ |2 R
  39. ; r& K1 P& r* G+ r& o" w& }( W
  40.     i += 1
    : X& @0 n& e# G7 G$ |0 e6 x

  41. % X8 u, k0 e# ?  D; M0 N# d/ l

  42. ! x* U5 |! {# `0 @6 C, E7 i
  43. # E3 T5 Y" z1 n$ z2 _
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    ) ?! ?2 Y' ]' P; x9 [& v
  45. 3 s  |: z3 h0 y0 z8 p7 T
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:' `4 d" K5 H6 X5 q; c: a* S8 [
4 V* B3 u) Q. Y7 E6 p# Y
增强锐度
  1. from PIL import Image, ImageEnhance
      }1 K/ N6 k( T, @8 ?8 |) h

  2. / b# j% a0 l- {) ?8 P

  3. . V1 F: Z, K- P/ J! l
  4. # Y* X" O  V2 w- d' e% {( C9 U  ]0 k
  5. # 打开图片
    & X2 C$ V& o( t) p2 ~

  6. ) G& m: K$ E, ~  T. b. d
  7. img = Image.open('image.png')
      `  ^, P) q4 X8 T' b& F! V

  8. 7 Y$ e& |% }; Y" L# C1 d

  9. # S7 p! J6 G0 w3 V) l; h
  10. 0 d3 g! P- {( v) i0 y' y
  11. # 增强锐度
    9 R3 ]7 i3 B0 w0 ?4 ?

  12. 1 f, n1 J9 h! W9 N2 w  o
  13. sharpness = ImageEnhance.Sharpness(img)
    " \, \/ U, i! y2 L+ [: f" z8 Z5 \
  14. 4 A0 ?. o2 E# J% f% C+ q8 _$ K
  15. img = sharpness.enhance(1.5)
    0 H) A9 I) q" Z5 Y# ^4 E, Z
  16. 2 e! q- D- P, H( U
  17. 7 ^, U' b; r; C# F& D

  18. % e' K% m3 D8 J8 g1 [/ X- Y# e  _# ^( ]
  19. # 显示图片
    3 F& A3 D7 u+ m

  20. ( b. I6 \1 X: [* P4 w% n  f& Y
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance4 X  I& U+ p4 \  Y) f3 j# E' ^
  2. " [. ?+ l. b9 \7 m9 J" G

  3. 7 p, D# C& i& j. s0 A

  4. + O( }0 ?7 C, Z* Y
  5. # 打开图片
    4 u) P7 k; D  ?1 h/ J

  6. & N& E8 }& |5 J  v6 ^  d, a
  7. img = Image.open('image.png')
    / h; ], b1 i) o, D3 d5 Z% L9 o

  8. # f; {3 B3 a. y% r- [3 @
  9. + F/ H3 p4 {: d2 `9 j. r( h( t( J

  10. 9 N6 B0 l, k- }- T
  11. # 增强对比度% A4 h% K3 S3 v/ \6 U- m) U
  12. . {6 }. X- E. H- b7 v8 Q
  13. contrast = ImageEnhance.Contrast(img)0 x; q' {8 G: S2 I; I- {+ N

  14. ' P1 i) ~' o$ ^
  15. img = contrast.enhance(1.5)
    & d7 e$ w/ c5 s: t' W

  16. 2 Z; C  ]  i) r  M+ c/ q

  17. / _; e  W3 \7 s3 O6 X

  18. # m/ a' k$ d+ t# U4 X. L
  19. # 显示图片+ e0 z% ]1 L2 o

  20. 6 q; N7 ?8 z, C! X& g8 F
  21. img.show()
复制代码
1 A0 V3 I- s( U0 B' L





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