数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件2 V( f) B, e7 m* k  ?9 i. \
  2. 9 U" w6 b5 [% b3 q1 Y; b: `) ^, Y
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    2 {" \" |; R% @1 I5 k+ h
  4. 5 t, ?( z4 t1 w4 ?
  5. # 增强图片
    8 n, E# J% i  D2 _3 m, g8 T

  6. # C+ S) c0 \$ b3 v% [8 M
  7. img_enhanced = enhancer.enhance(增强系数float)! N2 C. Y- O  W: i! ^. _) R# b+ U

  8. / i- D6 P7 p* X$ A% [% ^
  9. # 输出目标文件) I% Z. z* T! K( D: q
  10. 7 f- K$ i1 T; g4 G7 H  I
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
3 F) N8 R# P  F+ W, t9 a0 K3 E) T/ s3 M) d
所需依赖: X0 T' i/ _, R( f
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    - i& t* S0 p# }8 C
  2. ) c" [7 \) N: F5 j; [7 l
  3. # 增强
    ' t5 B6 A7 J8 H5 i
  4. 8 G4 _" w( q% Y' Y, A* }" S
  5. from PIL import Image, ImageEnhance
    6 |! i% d" r' d! o# A8 c

  6. * Q! ^0 Z* q$ Z, P% t8 i( c" A. @8 s7 ]
  7. 代码实现
    ' K$ k- S" A# d& L2 T! a
  8. % C% S2 Q0 u2 W; z+ |1 W
  9. from tkinter import filedialog
    4 n. ^9 {# R1 w  Z9 a
  10. 7 p6 j" d, D, R% \% c
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    ! n$ J: |$ g/ B0 }- x) I% X
  2. " p  Q' k9 }7 Z$ a% L' D
  3.     file_path = filedialog.askopenfilename()7 f& a. C  j0 `3 ^4 X

  4. 9 F5 ]9 L( q6 k% O) y# G: I
  5.     # 在这里添加代码,处理文件路径
    " Q" P; c6 c/ v: u. c! O
  6. % b8 V3 G( I+ o: I
  7.     print("选择的文件路径:", file_path)% m+ D, C8 [4 ~6 Z- Y( H

  8. 5 V6 V# ]" D5 e  Q/ u2 ^
  9.     return file_path
复制代码
  1. ( U. I  g! W1 L. x; |$ Y
  2. # 打开原图像
    : q' `0 W7 ^" V2 A( q
  3. & R+ H- U  B8 k$ m& m- b0 i
  4. # img = Image.open('image.png')( r0 C! P) w. Z3 R
  5. ; [+ W# j: v& [& ?) G9 ?
  6. filePath = open_file_dialog()
    6 @( C" l  z* H
  7. 8 b( P" g  h* J! N& f3 S9 u8 z7 T
  8. img = Image.open(filePath)
    6 @1 N9 p2 a9 _$ y4 Z1 U. B2 d6 k- s7 S
  9. 5 t8 J8 i" B5 p$ A; M* O) C6 ~
  10. # 设置增强因子* n! K4 ]! b, }$ g/ U2 K( \
  11. / f4 e$ u5 A3 B7 K4 O
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    2 R* Y9 r4 d) _" d/ a
  13. : s( ^, P1 P' d; a

  14. ! ^9 }6 H, Q- u4 {* ^$ ?9 ?

  15. - r' E0 C# M4 _6 P5 |7 M
  16. enhancer = ImageEnhance.Sharpness(img)
    - |' I7 i/ ^* H6 t: I( y

  17. # o! t4 b5 A' U" q* H: b0 C8 {) j

  18. 7 z$ x% Y3 Q5 ?" _' v% z
  19. ' k3 W3 T3 u  }1 D6 l' T
  20. # 增强图片
    9 i* N0 ^; x# D6 I% z: b, J

  21. " ?6 f0 F; M2 f& G% X: F9 k
  22. img_enhanced = enhancer.enhance(factor)* `7 {' x6 C$ `, ^' P

  23. 5 x6 R# r5 U. w0 ?  D  t
  24. 9 y( R# n! o: O) X+ Q9 V

  25. ( }* @! u% Q! x
  26. # 保存增强后的图像
    + E( _' v7 y0 r( Q, U

  27. : W* Q4 n  q+ }
  28. arr = filePath.split('/')
      v. U4 M* p' C# g- E
  29. 4 C4 m( l! F/ `1 ~1 A2 y
  30. i=0
    3 j& v, G4 d$ M# b( K

  31. 7 l+ Z! k; S3 F: A) ^
  32. fileDir=''# T+ @3 K0 j0 h0 R

  33. 2 t) v0 s9 ~6 M
  34. len = len(arr)) m7 r8 A0 C, x8 v6 ^5 i
  35. : ?; `# f( c' `! B# |/ Q% a. U% L
  36. while i < len-1:
    ; r8 G9 s( W) L4 [0 Y) I% \! U

  37. ( {: a9 z: h2 V5 o! P3 B
  38.     fileDir += arr[i]+'/'0 n7 O# N7 D. |3 E+ m) G0 H. T

  39.   b  t. B$ Y, B" K" O1 i
  40.     i += 1# |# {+ g) E6 L8 `( d3 @
  41. " u# |# G* Q$ n; B* O

  42.   c. l; }4 |) q$ x' F; Y/ I
  43. ) V3 |3 _* B$ z, S# m, O" R, k1 O6 |
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    + e" w8 [( k% l1 ]/ a1 o6 M) }& _
  45. # N0 ^2 T$ Y+ ^* H7 h$ _/ [/ F8 \& F
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:3 B$ E4 z. Q7 u6 W
  F- i0 N! m7 E. Z  t# s3 [
增强锐度
  1. from PIL import Image, ImageEnhance
    / Z& U) F! O# C+ q$ V
  2. 2 K7 S2 a: c9 }8 Q! w

  3. # Z! T" W& y% c0 b* ]6 _2 N

  4. 2 N/ Q0 n1 o9 k8 `1 x
  5. # 打开图片
    " A; R2 L+ C. P& J! f

  6. 6 e+ h& Z8 j* e: i5 o+ h* U
  7. img = Image.open('image.png')# v( Y0 c" [& [
  8. 4 h0 e3 x) M8 T; z0 V
  9. 4 r; ~% y: d7 H$ i

  10. ' `. X4 O' w( n; |+ \4 h* i
  11. # 增强锐度
    . _% n* y# E+ F

  12. * I$ W) R8 n- G8 w
  13. sharpness = ImageEnhance.Sharpness(img)) d; j' _# J, k0 h& T
  14. ( b# W; ?: C9 ^: T7 i" ~4 m
  15. img = sharpness.enhance(1.5)
    6 v7 b4 H' m: B- G
  16. 5 e3 T7 x  H) [' m$ T* u" l4 n/ F
  17. 5 g& b' H% e$ u

  18. ! p% X3 n, f+ C$ M$ N
  19. # 显示图片
    : d0 w2 q2 b" V* P% S9 q
  20. 2 @; K6 `1 X( U
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    & z$ G9 w1 ?6 O- h4 t( K) b! r

  2. 7 M! L! e2 N  U) J
  3. " q+ y. n9 @% w! g9 S4 S
  4. 0 x/ D8 Y: G) F& |) l1 U
  5. # 打开图片* D9 d/ u! G8 K2 s& [

  6. $ h9 b* I* V, R( P
  7. img = Image.open('image.png')6 q0 u. k; X2 h# [" f

  8. 2 |9 p  y3 p# z  `+ T3 Y) T
  9. . M% i* m8 L8 B: u) w$ Y8 X0 @
  10.   w+ m* b, s$ j5 Z& T8 V8 O! s. v$ t
  11. # 增强对比度
    " y( @; q; h/ G* B2 `
  12. " l  \( _$ @* k" E1 y9 Q
  13. contrast = ImageEnhance.Contrast(img)" `0 o, C& j: h0 W. _

  14. ! J& v# R8 a! ~! G0 ?3 |, U
  15. img = contrast.enhance(1.5)6 E" ~% [  p( I: N$ q9 d1 t" I

  16. " F/ `; q0 R" g! o+ O) g
  17.   k7 f* @* t; P# i
  18.   Z# h  I- C6 F* W8 q* \. j
  19. # 显示图片
    " O' V9 R6 A* L9 p, I' A# d

  20. 7 i# t, Z/ |2 p0 I  d
  21. img.show()
复制代码

) f3 C5 J+ [4 p( I: v




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