数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-3-21 09:28
标题: 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
  1. # 原始文件
    7 W8 C* Q+ p$ F

  2. ; W& p8 F  \. F4 ~' x, G
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))& _2 p# G4 U8 l% `1 Z6 t- \

  4. ! i5 }( k, E# A% m
  5. # 增强图片
    ( ]/ f, D# o8 f& [* L7 M
  6. " {$ ^  i  T7 Y' W
  7. img_enhanced = enhancer.enhance(增强系数float)9 j- }7 F( y8 x) ^3 E0 K

  8. . ]' I, T3 U/ d* c$ R8 D& U
  9. # 输出目标文件  S$ I1 N6 O9 j2 X

  10. # y. L/ U3 p6 N7 n8 l
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致0 x/ ~* {" r+ V1 d
9 Z# s9 g8 m9 r3 _8 _
所需依赖$ ^! s; P0 g  Q6 n& n! g6 z
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog  M% n. a; Z2 y7 K

  2. # Y7 v) X, _  S  y
  3. # 增强$ f* f' A; C$ n) b" Z; r& o

  4. 9 P8 p, H6 H6 ?$ z0 \& p' ?- b
  5. from PIL import Image, ImageEnhance! \1 ?8 u0 r( f: u

  6. 4 `- N% x6 u) q7 ?3 B$ `5 o
  7. 代码实现8 ?5 u/ X& t5 ^7 S. q6 f8 X9 }; m
  8. $ ]. T: {  a; x4 w0 h
  9. from tkinter import filedialog( @* B5 ]+ ]3 e* t% `
  10. & m, m: |4 ~" G2 C7 q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():( i1 F2 a, D8 E  Z
  2. ( e; R3 M2 s/ f& ^- A+ d1 m
  3.     file_path = filedialog.askopenfilename()
    # ?) k4 B5 Z3 k. d) W9 S+ z
  4. 2 o9 i& F; x1 o. i& o) N; w) E  u
  5.     # 在这里添加代码,处理文件路径) r' i6 J- L' H
  6. / m6 H0 k9 P( g0 U4 Y8 C
  7.     print("选择的文件路径:", file_path)
    " t8 i( \* h% t( N
  8. 3 M2 k3 x. k" }: n  X3 ]& O
  9.     return file_path
复制代码
  1. ) y# s- Z2 a. r6 `+ t+ o  A2 o
  2. # 打开原图像, j4 x1 M6 B" y% B. R9 U

  3. 9 z. E! H" D8 d& A! a7 [
  4. # img = Image.open('image.png')" P( ~3 m( u. I9 P" S, G

  5. ; y; I* r4 o% h: l; e4 _( A! X
  6. filePath = open_file_dialog()1 H( e" `1 S8 j* C9 K* l

  7. , @+ F$ m4 h1 h/ q" A9 }+ b
  8. img = Image.open(filePath)
    8 S% b2 b2 D  t

  9. 5 H2 j% W& g) n: _0 C3 _, @
  10. # 设置增强因子
      _, j* z# L: B
  11. - W9 b& u/ A: {# c% G) P
  12. factor = float(input('请输入增强系数(1.0~99.9):'))$ _) \5 j% l( n- E5 B; D

  13. & _% I/ x  |7 w" F+ T1 i
  14. * N5 x, ~4 P- _9 u8 n, d, p

  15. ) u& T! |  f* H
  16. enhancer = ImageEnhance.Sharpness(img)
    : d& L* B$ N) W& K* A
  17. - @1 W! R* g8 X( T# K9 \

  18. ; j/ F" N/ D; H8 n" _5 Z

  19. ' h! q) d! [0 f5 X- _: h
  20. # 增强图片
    / }* T' r, t/ g. z; `
  21. : _. n" a5 ~7 R! `$ D) U- s2 h
  22. img_enhanced = enhancer.enhance(factor)& O- _. u  i2 F% F7 J0 q% x! Q
  23. $ T  f3 w/ \6 @6 U5 a: \# S
  24. ; J3 l% y8 V6 }) I3 Z- G$ C! \4 H

  25. 1 t* [* D& @2 Y2 ^0 e
  26. # 保存增强后的图像
    9 v4 C4 E" n4 E" H

  27. 1 f2 R  g1 o/ e. A- q5 }
  28. arr = filePath.split('/')
    5 z; m; z5 b: h; F% {
  29. 9 T3 q  a4 C$ t
  30. i=0
    : U% @. g, B& H; ]# S

  31. - M+ f2 K# w8 z% l$ `# \% O
  32. fileDir=''9 [* e# B! f3 ~
  33. ( O5 p9 }) i( `! Y- j& r
  34. len = len(arr)
    6 i5 W5 p9 _( }4 p6 H; k

  35. & d: J  Y* D% F6 K9 M
  36. while i < len-1:7 @5 F3 \; y* d. G7 l

  37. ; F0 ?; F; d* O# b, L1 r; a7 ~1 a
  38.     fileDir += arr[i]+'/'& {% U4 b- `& b$ Y+ o8 I% B! a7 h
  39. ; S0 r. U8 ~. e8 S
  40.     i += 1
    # w+ @, C' H9 {* c2 ]* v

  41. 1 L& o9 {" T$ a4 X  R2 c

  42. : k1 q6 N2 I! ?+ B5 x- ]  q, h

  43. 7 W; ]0 k/ ^4 I! a4 k0 z$ u
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    : j7 J* a! f  M' x9 @( z/ A0 ?% Z

  45. 2 o4 K" U" L* b/ {, U8 }
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
' w/ z8 V: c. L' b; Z! y4 P
8 Z/ M- ?6 s4 g7 @增强锐度
  1. from PIL import Image, ImageEnhance
    . Q6 u1 ?. [5 K" P

  2. 5 a- g" }; I% ?
  3. 9 F" J; N  t' q- ^, G: v

  4. $ M1 W" D% ]1 ?6 N& W* R  H4 T
  5. # 打开图片
      T. K' Q' \3 P: v0 X- n8 G% r
  6. 9 g- V/ h2 U# \7 r+ M3 M* h$ a
  7. img = Image.open('image.png')
    + r% _) K+ V0 V8 a  T1 N
  8. % M/ o( ]* H- f2 E5 ^8 M
  9. 7 }2 `- Q- n! v& k

  10. 6 `- e+ I6 ~! i% Z$ F* W. @
  11. # 增强锐度
    7 K8 w+ P8 T0 g: D; M/ r% P

  12. 5 m7 v& T0 |: d* ]9 {
  13. sharpness = ImageEnhance.Sharpness(img)1 S; h7 |1 |/ B

  14. + l6 J& e  l' v
  15. img = sharpness.enhance(1.5)
    ' J2 v3 _, g  x+ ~$ D4 H) f
  16. - @+ N8 T+ O' p1 g
  17. 2 T" J6 ?5 d  C
  18. 0 R) S. v8 A! {- d0 y
  19. # 显示图片
    % u& ]. S. x2 X

  20. * h! L" u7 J7 a$ d" L
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    " E) L7 P+ n# R6 j, k9 [( ]" n  t: E

  2. + q' Y6 N$ r8 @* |9 c
  3. " B8 L& K* f+ a/ g" U; ]- r
  4. & L. \$ ]: ~0 J6 Y/ r
  5. # 打开图片
    " K$ v% G9 s! f6 ]- _

  6. # W0 h, c, Z- }1 }
  7. img = Image.open('image.png')
    3 l( n$ X& {' e- b
  8. ! s% z, S/ Z8 ~

  9. 8 k0 V* Y- G2 }  P

  10. % ^# n% I: {. k+ i6 B
  11. # 增强对比度3 \' l' l. b6 ~9 D- }1 }$ }) Y

  12. 0 R5 t2 O, h; p" G
  13. contrast = ImageEnhance.Contrast(img)
    0 q/ z* C+ ~  j$ ]: ^+ |+ D* L

  14. * q- t; N4 ^+ P. J+ u6 r
  15. img = contrast.enhance(1.5); r5 g) M: R% [$ O$ u

  16. 2 k) |( H' G* W0 e& |; Y

  17. + `* e" p1 T( K& m& Z( B( i. N$ }
  18. / L+ H" @# B1 r% p6 B, K) \3 ]
  19. # 显示图片  a5 p1 K+ W% x5 S, Q
  20. 6 f% d# v% Z  d- q% Z  G# p4 O
  21. img.show()
复制代码

. h4 L9 }1 M1 V1 l0 f




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