数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件$ \/ _* {0 u" Z$ m
  2. ! C: O/ \% e* U) s8 J
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png')), _# P3 I2 \0 Y' Y4 |# n- t* I
  4. / `% k- v1 P$ V, }$ X- o
  5. # 增强图片5 t2 R9 G: l, `6 U- N

  6. 8 ]) j1 U% C$ r
  7. img_enhanced = enhancer.enhance(增强系数float)
    " `3 ^4 c4 o: W9 j
  8.   ^4 d# t1 F& z/ x/ S! M. k
  9. # 输出目标文件6 c: A* G% d$ g8 }: b
  10. ) k# ?3 M8 w% R. A5 y) Z( C
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
. O, t( U6 g; }" R4 }# B: e; }/ _; F9 }2 l+ [
所需依赖
3 O  U2 N# n8 t4 B9 \# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    & q4 P: r5 j7 w( B

  2. 6 e& Y5 L" @8 ]* j
  3. # 增强% Z. {& U$ V( Y

  4. & V" g& |4 |( b; b
  5. from PIL import Image, ImageEnhance  a3 [3 z& ^8 b6 W% [4 x0 o% e& Z, M- ?* h

  6. 7 u5 S$ o6 y& }1 c' C
  7. 代码实现
    : y7 a" k" x& V9 W, i: c

  8. $ f! W' n" s3 @4 {4 B
  9. from tkinter import filedialog7 @+ s- \+ U( G: ]; u' M, j/ b& M$ ^
  10. , {/ c5 u$ B' \4 y/ j6 s8 m0 n
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    $ G, W0 m. z! w( R  z6 _

  2. 9 l2 M, P# X; W* K: q) [# y8 V" O  f3 d
  3.     file_path = filedialog.askopenfilename()
    + e& r5 f1 c/ z  b$ v2 t
  4. ) h, Z& ?4 D- F" @; K0 ~' ]
  5.     # 在这里添加代码,处理文件路径
    ! c" [  Q2 F& J7 r* _) n3 M: z

  6. 0 ]2 B$ s' B% w! f
  7.     print("选择的文件路径:", file_path)
    : W& J* ~' W4 q* Y1 T8 s

  8. 3 F8 K) b9 |3 _4 A
  9.     return file_path
复制代码
  1. 9 r& C% S* f8 g3 E
  2. # 打开原图像8 ^! V' C) M% X" p

  3. & m0 h: S6 P7 E1 w* u8 s; H
  4. # img = Image.open('image.png')4 w# N8 F4 J& ?3 S4 |' y( P

  5. & F2 o( p0 m: z& h
  6. filePath = open_file_dialog()) Y& U3 _; @2 y9 E% t3 [- h

  7. 8 e/ }' x. f9 u& D
  8. img = Image.open(filePath)
    3 O" b0 k/ o! J: Z. j/ \4 [

  9. # M4 }3 n) H7 ~- g# w
  10. # 设置增强因子+ l  l4 S8 i: S3 g: C
  11. 1 L) n; ^( i8 b/ _6 }- S( N9 v
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    0 v1 z* D3 s6 L2 b$ P
  13. * T2 O5 K% g$ j* P0 l4 V

  14. ( l8 `; f( x- `  P
  15. ( @9 \! e) x2 i7 a- \2 A
  16. enhancer = ImageEnhance.Sharpness(img)
    , I2 q6 A4 F& j# d
  17. 2 m5 D& t4 s0 H% T

  18. 2 \* e* l  g; k$ e
  19. 4 a. `$ N7 X2 x7 N
  20. # 增强图片! j6 A6 c5 T9 e; j" p' I

  21. ' z5 }- g7 {- K, p: d  \8 K
  22. img_enhanced = enhancer.enhance(factor)
      M8 O7 ~; b5 ^6 H' M5 S
  23. ) H1 J% ?& C% j* ]1 k; I1 A) @

  24. 7 F+ G% b1 O/ Y

  25. ' o8 w0 F3 @4 ~6 D
  26. # 保存增强后的图像
    * E  g- Z, B3 ^; ^, P7 ?
  27. ; M4 m4 z9 j9 t( W: n
  28. arr = filePath.split('/')
    ; M7 H+ [. }" Y+ F$ Y8 |
  29. , i& x, g3 D% Y6 b4 S
  30. i=0( w" a" b& s& [5 j
  31. 8 C* z( t; n" T5 w
  32. fileDir=''1 g" A1 \& u0 J- k# c# [  f

  33.   u2 g' R7 C$ x+ C: [% d( X
  34. len = len(arr)
    0 t9 f5 J8 V. @& q* B3 J
  35. # w* y# I) E5 ]8 K4 x
  36. while i < len-1:
    7 `9 [! g, {. p' {% u
  37. - p; ~# ^/ I% o
  38.     fileDir += arr[i]+'/'7 R' ^% E5 n; w: O6 J  G% b

  39. 2 R. a2 H5 ?, I, |. a7 A9 P
  40.     i += 11 v0 c. Q; x) r9 t
  41. " z  K) T5 x; o% l, b- m

  42.   Q+ Z" b* y. N, L; R$ I0 ~; B

  43. ! @' M" D+ n  B4 D
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])  K3 T$ |7 ^7 X5 C  k1 _1 N7 ^
  45. 4 ~( j4 ~' z; ?+ d3 w
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
" I$ }0 O/ A: |
+ C  W; c" D8 K  y! ?8 z增强锐度
  1. from PIL import Image, ImageEnhance
    : [1 p0 C  J/ H
  2. 2 ?2 F: S% ]$ v! X+ t' y* {6 h

  3. * w4 H0 x* A! W  x# t# M  z' E8 S% n

  4. , T) e$ x: N: w
  5. # 打开图片9 c+ w8 K8 c  }6 t0 T. W

  6. * B4 O: K. K) t" t+ m
  7. img = Image.open('image.png')
    / D' d6 f' r) N
  8. " `8 j, Y8 A$ u8 T: J# ^8 ^2 V2 S
  9. ! @: H( p0 u& h: N8 N% p; q
  10. 1 c" Y) i% P8 J- w. t/ S/ Q: y, I
  11. # 增强锐度( a/ c# p) i3 _

  12. + ?( w! B0 r: K( {2 M0 n$ w$ W
  13. sharpness = ImageEnhance.Sharpness(img), _: ~; t) |3 S7 C+ l
  14. " ?: ^6 D  `, a+ @; h" R
  15. img = sharpness.enhance(1.5)
    ) ^; r( c2 e9 [8 m
  16. / y9 A  T  _9 a
  17. " I% v0 F. ?, X) `! k* g% s% N+ ^

  18. 7 s$ b9 F/ w+ m' v4 v/ U
  19. # 显示图片6 q5 [$ J+ D* O' b3 W( C4 s

  20. 0 b! w; E2 i( o, j5 Y7 i2 ]
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance) q+ p- ~: }1 o* ]: |% C& h
  2. 2 Q6 d) U$ S, y  p, x' Y; |3 p
  3. # i8 c( e$ i" U, ~
  4.   A# N/ o8 |) j) \- ]; W
  5. # 打开图片
    , Q: m' W) q" \$ W

  6. ! f$ N3 u' n% s% y: \9 P
  7. img = Image.open('image.png'): H5 Y- b! o+ e) [. u" O9 K8 I- A

  8. ' j% A( d* @( K- [
  9. 1 h& H3 m* K6 v% T6 g  A" F2 ^. \
  10. ' k8 _7 x/ f0 U
  11. # 增强对比度& |' v$ G( `, l" Q

  12. . C. ?7 r+ O' C
  13. contrast = ImageEnhance.Contrast(img)# v( R2 R/ b0 t* Y
  14. , w  c- {9 t! C; T2 W
  15. img = contrast.enhance(1.5)+ P- L3 Y+ c# m/ ^- v  ~

  16. " \+ u" p$ k7 ?( t4 r
  17. - Y: {9 X9 ?/ I6 T# R

  18. : Y: R! [& k! |0 O4 T! r# r
  19. # 显示图片! R3 i0 X1 t6 O3 p* T
  20. # t) Q) h- a+ @4 s% t+ f
  21. img.show()
复制代码
% O0 F; x6 o& L3 `" j





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