数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件
    . j$ ^$ s$ R3 k9 G4 O5 e" e
  2. ! T  y3 ?& Q' u
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    0 ]+ r( u) f' I. l+ y0 U# l7 `

  4. - |- q3 X: W/ @8 o* j
  5. # 增强图片
    3 m$ b/ j, B# q# k, _# J

  6. & b, s, j  a" Z
  7. img_enhanced = enhancer.enhance(增强系数float); e  C9 `4 u7 e7 K5 ~) A) Q$ R: [
  8. 9 J& _/ t% T. C% V- Q, ?5 V
  9. # 输出目标文件
    % j& \9 ^' U+ _7 n& L0 u* \! y
  10. & K% v: p" \! F" @- i( b+ F% o2 B
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
. J6 M* F* L; M3 d9 x0 z
4 \* ]( u& Z9 N3 X所需依赖0 @2 C% a% V% g* [; D5 j
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog. s$ A( R0 _  E7 a5 q

  2. " l+ Z* u( N2 V$ l
  3. # 增强* C$ V# V1 H  _. h* n
  4. ; i" `9 |0 u& x! d
  5. from PIL import Image, ImageEnhance
    , \. ?* K/ ~' Z) z0 f$ ~: L

  6. . I( U* z  y  K3 b; b2 X
  7. 代码实现# ?. [4 v# N# ^9 p# a+ l! r
  8. : Z: l" [, j1 d* a
  9. from tkinter import filedialog% J9 h! S, z" r$ m

  10. , [/ P; T) d% W/ {  j6 L
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    ) ~8 T/ @" J/ X* j- f1 H6 G

  2. $ e2 S. p- @( K! m& N8 K
  3.     file_path = filedialog.askopenfilename()
    $ G2 n: z& _! w4 e( U4 f' Y8 m9 A. w# W

  4. # q5 s  H/ J5 F6 ^
  5.     # 在这里添加代码,处理文件路径
    8 Q8 K: i+ S$ N0 `# H
  6. 0 \# D0 \( y8 t! N
  7.     print("选择的文件路径:", file_path)
    & |- K( S  s$ w

  8.   `* x( k% j+ g- y0 @! s) N
  9.     return file_path
复制代码

  1. - D: l, C' M3 Q  u1 |
  2. # 打开原图像
    * j6 [- p. H! S5 M- G! ?1 A4 t

  3. - ^- }$ ?5 B- h. @; P
  4. # img = Image.open('image.png')% q: ~$ |5 A" O& S
  5. 1 }: v. e9 ~4 _, _! C
  6. filePath = open_file_dialog()
    1 I& L8 W0 n+ l/ [

  7. 7 A  T7 B  A; {5 p' V: Y
  8. img = Image.open(filePath)7 [$ g, S- h5 {) |1 F2 z0 G
  9. ; t/ q, S, l5 v5 h
  10. # 设置增强因子4 B# s, T  a% X: Y& M
  11. 2 u4 S8 _; [! R! ]- X" W
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    & |( m  V) I- \7 q5 X/ ^

  13. # s) j6 V4 h) o  ]/ ^! y: |/ c

  14. - T3 A7 q0 L+ {& N& A( }
  15. 7 {& u. `4 ]$ p# j+ W# t2 I
  16. enhancer = ImageEnhance.Sharpness(img)
    5 f7 H! _8 q4 \

  17. ! i8 K- l. t! Y1 E

  18. - a  F+ E) c4 B) M6 t

  19. 4 W; a) V8 ?& S" ]$ R; R6 {: R
  20. # 增强图片
    6 i5 S6 P6 N- p4 x

  21. ( l/ w/ h4 W; v2 c2 {; T! u2 T- c
  22. img_enhanced = enhancer.enhance(factor)
    4 X7 M1 }" U+ [3 D3 N0 o" K

  23. " z! t4 ~3 J3 q& o9 U

  24. ' `0 Z2 w, Q2 z# {; C

  25. ' B* T/ \  g1 ^2 E
  26. # 保存增强后的图像
    ; n7 x9 |0 A3 T- ?1 ~$ V

  27. 8 m$ m# X/ U/ g6 F' H
  28. arr = filePath.split('/')0 i  x  ^! }  P
  29. , V6 a* d5 O% F
  30. i=0- B& G& c$ B. Q) k
  31. % Z% Z! |. F7 i" j& Y
  32. fileDir=''9 U! J' g% _$ L) j: B; A' o

  33. $ M. }: f. x6 G+ J
  34. len = len(arr)
    / k1 z9 c# W" \5 J5 u+ O9 ]. S
  35. . |0 E. [- E2 G/ e6 U  Y
  36. while i < len-1:+ }4 v- S( |8 ]9 L: M( z
  37. : X% f  E0 u% Y2 k
  38.     fileDir += arr[i]+'/'' t) x/ I: y/ C3 P5 _$ A: G* y! G

  39. 3 s' A/ H2 g2 m) a2 M% K
  40.     i += 1
    4 g1 ^: g/ q0 x6 t( h3 A$ h

  41. $ r, U) R: `+ l8 ?& w
  42. 8 D( @" E% [7 p' C9 g. b) j

  43. ! e4 G0 T3 k5 z1 y% V$ Y6 ]
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    0 L( `7 R1 l  n+ y/ w

  45. . z7 c$ {# p4 B9 `7 l2 P% D+ y
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
9 i1 e* ~: d! c% }+ n: T5 ~0 Z; |+ k6 R& I" t' M
增强锐度
  1. from PIL import Image, ImageEnhance* X% x: u5 A: R5 h: o& S7 N  q- }

  2. 2 G9 e( u5 z! a& d3 {% k

  3. : |( p& v) G* n

  4.   u2 C4 h# _% F- v! a) ?
  5. # 打开图片7 l+ O5 M( V8 x) }# s3 a* P& c

  6. 0 G" [: O! \7 O0 R
  7. img = Image.open('image.png')* P4 |% b$ |+ J( U  R6 Z# R# J
  8. : W$ B$ ^* U; o3 p7 ~
  9. / C4 l( g. U. V& @$ z0 B

  10. * `$ I* w% W- r; c4 h
  11. # 增强锐度
    * t1 I7 v8 o- e  ]9 F
  12. & ]+ F* S7 ^8 V7 Q3 @
  13. sharpness = ImageEnhance.Sharpness(img)' y! e; `5 a  f0 Y! E2 k2 A4 j! Y, h

  14. - B/ C5 G; o! R! s
  15. img = sharpness.enhance(1.5), b& G7 F' f4 W0 Y' k( o

  16. 5 ]. }1 S9 k8 ]5 D! R

  17. ' U) l1 }" }! k
  18. 2 E# ]: j# R/ r  p) y1 i
  19. # 显示图片
    1 `5 h: F- Z; R
  20. : z. r+ r4 q  S! U
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance  t  i/ X4 Q4 m' f$ _4 T

  2. 7 `+ R0 c+ P  ?2 c# A, `) u% @  ^" i

  3.   x  [3 P! a: s5 I

  4. , a' L1 ?+ l( l. ^! O9 A
  5. # 打开图片
    9 K1 ^; U# {1 N
  6. 1 D! m9 r& _! H+ ^; r
  7. img = Image.open('image.png')3 }% s6 G9 ^% m+ ^

  8. 2 c8 ~9 r+ g: D+ q
  9. ' p  Z0 W+ F% Z3 A  q( T$ h

  10. : c6 b8 X% O# B1 ]( c& R& E) P: t
  11. # 增强对比度" z& l# `  _: T' Y/ y( u; M0 ~

  12. : Y- ^1 V! m/ U" U# z8 T* h1 Z
  13. contrast = ImageEnhance.Contrast(img)  \# x! o/ Y& T9 z, y9 l8 m
  14. 5 O) h4 ]7 D# g5 Z1 a. J7 P  A
  15. img = contrast.enhance(1.5)
    # D; Y# q+ k5 k0 g) u+ C% O) k

  16. 3 B  A( Z; t& [7 a

  17. ' U+ V0 _2 j$ g4 N

  18. ! |$ S" q$ E6 I
  19. # 显示图片6 d. v% F" _/ A, j

  20. # p. i: }9 g7 {7 U
  21. img.show()
复制代码
, `- a  N: U6 c" k# g3 ]7 J





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