数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件3 R0 [: r/ l2 {  {- ]' W

  2. ! m6 B! `% Q' p
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    7 q& C) w6 n2 h/ L0 `' W' g

  4.   Q; m& V# F1 l- f- C
  5. # 增强图片
    # Z* I* ~. M5 [
  6. + x+ p2 d, Q5 u6 y2 D1 ~
  7. img_enhanced = enhancer.enhance(增强系数float)" r0 P4 {# D! @! C

  8. 2 T" }! l: M  R* B: j2 k3 Q1 a% _
  9. # 输出目标文件' @, T) ?& v3 H8 |3 E' T" q

  10. % J2 }% p8 N& \1 w
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致( K# b$ \; ~% y- Z/ c6 k4 z# a

( t( P" g) m2 u/ g) p所需依赖, P  @4 m. L5 `" m: j
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    - ~% b+ l2 w/ N1 p

  2. ) j7 Y% ]: P( j  k
  3. # 增强$ f) I; \) L" a
  4. ' W4 p# b9 ~0 G" ~1 Z1 P
  5. from PIL import Image, ImageEnhance+ e  H& A" s; T

  6. * v/ E' n9 Y, v
  7. 代码实现+ j6 x# ]3 E; o: p3 w9 u
  8. , Y* Q# j, B' G' W$ \  G; T
  9. from tkinter import filedialog
    2 `1 g' Y. {7 Y- o0 o+ X6 \. d
  10. ' e3 H# v! u7 F$ U; g
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():+ L6 v1 `# I4 q8 J2 O

  2. 8 @4 a$ G- a. U  A
  3.     file_path = filedialog.askopenfilename()% c! Q- K- N& g% D% Y# h, m

  4. 6 e' u$ w+ h) F6 k
  5.     # 在这里添加代码,处理文件路径
    / ^4 r# w& I6 Z* S7 ?1 n2 y  H% {
  6. 6 o7 m2 A; A! _6 y& r  V" v2 G
  7.     print("选择的文件路径:", file_path)
    % A- a7 `& v+ C
  8.   D" j; t, x7 Y) L
  9.     return file_path
复制代码
  1. 4 F$ H; z' O6 x" L! W/ }
  2. # 打开原图像- k$ I8 y* P9 O3 Q2 U' H

  3. ' X# D& P" G. x) E1 o4 ]* `
  4. # img = Image.open('image.png')" d2 H) p! G$ @# ^  A3 x; A- @; x

  5. 8 ]  N  K0 A' [8 i1 W
  6. filePath = open_file_dialog()
    4 a& ^) X4 I  v' _* G" @
  7. - o3 g5 P# I: Y
  8. img = Image.open(filePath)
    3 b# |3 J) M+ \

  9. $ ]9 N& A  \9 r2 H7 f" T, X  Q
  10. # 设置增强因子; F& g7 I5 G; Z( i
  11. # O+ H1 C# [2 j
  12. factor = float(input('请输入增强系数(1.0~99.9):')), G6 H$ O/ P2 I% @0 v8 ]) c

  13. - |/ v/ Y  _) |2 f5 i

  14. - I% h! K+ T# |; Z
  15. 8 `# e1 X! c  r, g! y6 n
  16. enhancer = ImageEnhance.Sharpness(img)
    6 r5 _1 w  m& _6 ?( f% d$ D9 r$ j$ G

  17. 8 y% x; B: u7 z2 e' Z
  18. 7 B. B. X3 u. F% F/ o3 ?3 e

  19.   {; U+ M* A+ L3 b  s$ s
  20. # 增强图片0 V4 @6 @  X3 f; ]

  21. " _) [' y* T8 I3 L, }5 P$ d2 d
  22. img_enhanced = enhancer.enhance(factor)
    " g) L: ?- q5 I; N1 N

  23. 2 S/ g/ a& U1 o
  24. # o, z( R7 g2 e) Q) m+ f8 _

  25. 9 ]. b  y% {1 X+ f
  26. # 保存增强后的图像
    4 H2 G$ m6 K2 c, ]( O+ u
  27. 8 f& s3 B& g9 q" Y5 [, U
  28. arr = filePath.split('/')
      A' @& D1 p2 G  _4 C6 |! A9 D
  29. / Z1 o% \4 E; A- j7 |' n
  30. i=0
    ' D( I4 A/ ]; W4 N

  31. ) C& E- D9 f* d
  32. fileDir=''2 V1 k! b) @0 a8 o9 F. [
  33. 8 U. _; l# e7 Q5 |4 L
  34. len = len(arr)8 R0 u  Y$ W2 \3 @

  35. . }# r7 k- R- D9 x, f  }) R
  36. while i < len-1:
    " s, Q5 w. J$ Q* j2 B: B' Y
  37. / {, S; y6 D0 N/ |! T) F7 _
  38.     fileDir += arr[i]+'/'' y" q5 o! o9 y+ v% d3 L  D

  39. 2 S5 {5 L' a& g7 [0 m7 Z5 S" x2 I
  40.     i += 1
    0 A6 S8 r3 f7 ]' d" [* D

  41. $ O7 Z: w! W) S

  42. 7 O; W6 \' Z, A

  43. , u) h6 E8 b3 s: i5 b7 c
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])5 i1 ^) @% M( A4 p
  45. 9 G& [1 S1 Y5 k
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
+ K8 y5 ]" m! l4 e) x' |
0 l9 N+ P& r3 Y% A, C增强锐度
  1. from PIL import Image, ImageEnhance
    3 G! A7 B! i& f) x/ U8 _

  2. 3 M; x  F! Z, ^0 j' \' z3 {

  3. - k  U1 n% R% ~6 \

  4. 1 T4 Q) e+ x# r# M; b3 s
  5. # 打开图片; f: B. ~3 I1 L( I- T

  6.   j$ m& N( J7 P2 I; Y
  7. img = Image.open('image.png')
    / P6 P, N6 G: h. t3 j7 l& X8 W* J6 O
  8.   f! S  H+ D& n2 D

  9. ) g6 F2 q8 y4 u! J+ y2 \6 `: i/ `

  10. / Y  W0 z1 G; K5 H
  11. # 增强锐度
    * l$ g* L! r) H" B0 \

  12. ; \5 p! K& @% f% x- V5 U- J
  13. sharpness = ImageEnhance.Sharpness(img)
    3 t* G, a7 A! U2 q; T+ }

  14. # [8 A8 w  a% V9 _8 u* x/ O7 c6 z9 a
  15. img = sharpness.enhance(1.5). _; @6 ?7 p, ]; h2 z
  16. ( K4 i3 w4 z5 I+ f+ E" A$ b1 l2 w

  17. ' {  z! T& C8 W5 A. U$ R; b

  18. 9 P$ B2 u9 B2 ~1 a8 g
  19. # 显示图片
    6 t, J  K) p+ x& y$ T: r: i* {
  20. $ U5 J! R5 ?& |
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance: @/ e8 }0 ~, t" R
  2. ! ?8 b/ `8 h+ \/ ~! D5 h( s8 K3 ?2 f
  3. ! ~; V% ^, R7 c) ~# a
  4. , q1 P$ d+ F! z; o$ a8 g3 @: @# Z
  5. # 打开图片1 b5 X, U, l, }$ H/ h  c

  6. . Y2 t" V: `9 A1 V
  7. img = Image.open('image.png')- G* {, e" F; s0 {6 a
  8. " c; {+ c. j5 K3 L+ O8 E
  9. / @' W8 [. n. G; o

  10. ( E4 a' y( {7 h% Y3 o5 k% x: i
  11. # 增强对比度. Y1 J7 Z# x2 V6 z; N3 F
  12. 3 a( P/ H) P1 X5 c: o! I
  13. contrast = ImageEnhance.Contrast(img)4 q3 H) o( ?0 `$ X7 h$ @

  14. 2 k" u! _* y9 W! W+ s" G! [4 N4 k
  15. img = contrast.enhance(1.5)
    5 _+ a6 s3 @6 P  q1 ~1 \4 j% w

  16. $ W2 m6 j  y! X( |

  17. 1 B6 J. d: A/ @! `
  18. ) I. o. l* |- L7 F! z4 w
  19. # 显示图片
    & E+ L% u8 L' L  ]4 [9 g% c
  20. . Y2 A" b5 R/ P# [9 F  b1 I
  21. img.show()
复制代码
0 T! n8 D& {. L: L





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