QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2989|回复: 0
打印 上一主题 下一主题

三行代码实现图像画质修复,图片清晰度修复,清晰度提升python

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    $ I6 n- r; N1 K' b* j, }0 {6 h$ u

  2. 8 k! T, c; s' Y9 v6 n* R, e
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))) r# r$ i9 f; z/ K

  4. ) U! j& Z& \5 }1 m& G$ u- J
  5. # 增强图片& h9 H$ {* O, h7 i7 X: n
  6. 7 ?) t& \; J+ b& b2 o3 |
  7. img_enhanced = enhancer.enhance(增强系数float)' K  [4 x5 T; j- Q+ A3 e( e
  8. : O: k( Q$ _0 Z8 j. b  v
  9. # 输出目标文件
    & I- {) d6 ]6 A  r! C9 h

  10. : w1 [' \5 h/ w* i
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致$ e0 I# B. B! s$ X0 i0 d
6 P9 o+ F! H, F* w
所需依赖
* _. b! Q! c  J# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog7 C, z6 a& c& K& r
  2. 4 {7 V# [$ c0 x; A( z  ?
  3. # 增强
    2 @! c1 n: B! K8 W

  4. 4 X\" |. N/ ?0 ^
  5. from PIL import Image, ImageEnhance
    0 a. c1 x: Z) k2 B. S
  6. # \$ z9 ^  l8 U3 d- k- {; ?
  7. 代码实现
    & y$ v; X2 B3 t& @; w& l; ~* G* W# N
  8. 7 p- E4 v% C1 e; I. r# H5 L
  9. from tkinter import filedialog
    - E% |. R; Q9 @0 O. ^- G1 ?

  10. 0 R+ a5 q\" i$ F7 c) ]2 Q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    3 Z' n; ^: Q0 w

  2. \" X* f4 N/ d. t; r, n) Q
  3.     file_path = filedialog.askopenfilename()! }0 M' i1 D8 `, ~$ T3 V$ i

  4. / f7 @' E  r! k; q0 g$ {8 z
  5.     # 在这里添加代码,处理文件路径
    ! f, ~) p$ ?3 f1 t9 d

  6.   K7 k6 `1 |6 B7 ]) W/ G2 Y. h
  7.     print("选择的文件路径:", file_path)
    1 {9 W3 i5 Y; f3 P( T0 `2 X
  8. \" O4 @% J\" }6 V/ R3 e* [, H
  9.     return file_path
复制代码
  1. 2 d/ O- C9 n( e/ x
  2. # 打开原图像: w0 D, C: C' ^- {9 y4 r3 f' c

  3. 4 V\" i6 i/ X6 K4 C$ l
  4. # img = Image.open('image.png')
    7 z# s6 T$ r/ k: i+ F1 |
  5. - m( Q8 T) q' Z& i  K
  6. filePath = open_file_dialog()% B( [, n4 J# X& {+ e, p1 h
  7. 9 a; H4 H/ l  F% Z
  8. img = Image.open(filePath)! t0 T7 Z& o1 @( R0 n/ H) L/ B8 Y
  9. . `( u0 G  r' L. D9 H' k
  10. # 设置增强因子$ A7 V: G; \2 f/ L- p5 H
  11. ) p8 g& j9 ~4 Z* J
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    - }/ j' F) U$ V0 K
  13. 7 J/ ]; A4 V) c
  14. 9 |  _4 Q( T2 e; r

  15. # ]  Q/ F\" |\" T2 j6 S8 r\" r7 G# _/ U5 Q
  16. enhancer = ImageEnhance.Sharpness(img)
    . J& @, Z; d# P, V6 A
  17. $ b# o! ]0 L( t

  18. 0 @+ U\" A5 R8 S4 Y- _9 Y; i. T

  19. ! J\" Z. G- `. u
  20. # 增强图片
    1 u% I9 q2 x0 ~8 y% I; K\" b: e: w

  21. . D; W\" `3 N9 e
  22. img_enhanced = enhancer.enhance(factor)5 L( i, a9 Z. `& y3 h  s5 V3 d

  23. 3 E+ A1 s+ a$ P0 _& E
  24. : o; k: V$ s8 _0 _+ j6 j
  25. . e\" ^. s; {\" F2 ?3 N+ f% C
  26. # 保存增强后的图像
    1 j: j) u$ k$ r3 |* D: c8 q3 O% t# u

  27. 3 |) M* N. A0 \\" G; c* d5 I( m; w
  28. arr = filePath.split('/')
      A0 f; N% L; T3 J1 L; m
  29. - e2 _5 W% m/ G+ g- h' u\" ?
  30. i=0, b* ?( i; g; j, {. {, x/ B

  31. 8 Y3 _- z1 h! V$ L& K
  32. fileDir=''
    4 d' a- s& D# n  q2 d; Q! D: P6 g
  33. ! S- V* _6 B7 g1 A- S/ R: E
  34. len = len(arr)
    & D0 o- L$ ]' h) }( Z

  35. 1 }9 W  @# k2 I% z7 _\" k
  36. while i < len-1:
    * N& j0 j1 r, l

  37. ; s9 Z  X, @! ^- ?
  38.     fileDir += arr[i]+'/'
    8 P! Q2 ^+ y( u) _- J

  39. ; X' F  V; ^' p& {% L
  40.     i += 1
    - o\" Z' ]; O7 p. y3 W/ v

  41. ( s5 y9 R9 _: D0 M# {! H; Q

  42. \" F% m2 D  t# X- \( O3 _

  43. & S8 \! A) n$ C8 Z
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    * s! R: A( R) k* {. ^( R

  45. 1 U* {\" {/ Q2 Z
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
; ~6 w% w1 ~/ Z& N  P. G3 T' }1 A% e
增强锐度
  1. from PIL import Image, ImageEnhance
    1 ^0 Z# o8 d* d: }% A& ~
  2. # Y$ n% y9 p' _% B+ a6 W
  3.   D8 V+ A3 }: m2 _8 f6 O

  4. 6 l\" ~7 {! g, u5 M& d
  5. # 打开图片
    6 J, L+ z  P; R$ M7 j0 }
  6. $ t8 P/ ?+ C! u/ g
  7. img = Image.open('image.png')7 c% ]  A9 M- _! [\" J( A
  8. 1 `, W\" b- b% e7 j4 _: l  X
  9. 8 {  g4 U6 G7 q8 K1 X
  10. * K( A+ _/ ?8 v, A, x
  11. # 增强锐度
    1 e7 F3 R! |. W: O) @% i% E

  12. : N2 z5 o( b$ L0 j0 x3 o
  13. sharpness = ImageEnhance.Sharpness(img); N+ }1 E, J- D

  14.   F( s- [- k: O. g\" H# z8 `
  15. img = sharpness.enhance(1.5)* T' C; Z2 z: |. `5 V! K

  16. 5 T) y/ y4 W3 q/ D$ Y% y# Z
  17. 5 e: R5 C2 M6 g
  18. 5 R/ R% X5 ]( s' m' c+ t
  19. # 显示图片
    . U7 ], f) B8 P  _: W
  20. 0 r7 p/ @  P! \  p! v
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    ! X. h, H1 X+ y) U) h4 ?0 ]. r
  2. : E  |4 H& d- q( f& M6 O
  3.   }- T, Z/ E: G\" Z
  4. & v; h+ _! D& G* {  L( n
  5. # 打开图片
      l$ {4 s1 h: r
  6. % u( L9 G: q9 b* d
  7. img = Image.open('image.png')
    0 e  z2 F) v# ]
  8. 9 @) K+ G* q& G! c* z

  9. 6 j7 T8 a% j& i( L' f\" |; q& m& l: D
  10. ' _2 X9 w' D2 d# N7 `) g
  11. # 增强对比度
    ; S2 j- p6 Z7 x\" g( {# m9 o* i3 J
  12. ! s6 Y4 v8 H5 `/ _+ V: m( ^
  13. contrast = ImageEnhance.Contrast(img)5 W\" w- \- q) m+ Z% ?+ K% U: A& Q& O

  14. 8 a; ]; L+ H9 q6 I\" ?$ r
  15. img = contrast.enhance(1.5)  T* {  Q8 H# w% u; s, @; ?
  16. 7 j5 s) z  Y4 i  f
  17. 3 r$ B' p: A. ~; ~\" C2 J

  18. . u+ d. E' N, f5 c
  19. # 显示图片
    7 |\" |4 ~/ Z  [, x2 @: Q

  20. $ l4 S# ?; a( i0 n( f0 {, V- i2 E0 [, a
  21. img.show()
复制代码
1 P/ G5 x8 n& s
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-7-29 05:30 , Processed in 0.345387 second(s), 50 queries .

回顶部