QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2923

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    1 Q2 Z, c% N, [, |# U* F5 Z
  2. 2 J- @) |$ q6 B  ^4 s; Q\" L
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))4 u& A: S9 i7 w0 C
  4. ) {$ m2 }\" v3 T\" i3 J: g: n
  5. # 增强图片1 c6 ?: c2 X) F* A& f

  6. , G7 R0 B/ N0 R, b
  7. img_enhanced = enhancer.enhance(增强系数float)
      T7 \( m6 s\" _0 K6 l

  8. 6 Q3 z. }5 n0 J: G5 g9 S
  9. # 输出目标文件
    : R: P4 X7 e\" ]  d( O
  10. , `- Y( T' _8 A+ j8 V
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致& A9 c% [% J: d9 H& ]. A5 F  X

/ o0 _+ G. \  K% l2 W( s所需依赖7 U& }3 N! H1 r  ^9 b6 E0 r1 P
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    0 i6 }/ Q/ J1 i& |/ z5 r& x8 x

  2. 0 ^: d# E1 ?) V/ F
  3. # 增强
    . w# I- |1 F. Q# b\" c

  4. # e% g\" P. O6 D3 n' Q3 `
  5. from PIL import Image, ImageEnhance& p( Z6 s4 F' x2 h2 p& [* z) s- B

  6. * O5 v4 G5 U2 d% [
  7. 代码实现5 Q# \6 k, R8 o9 ?( N- t
  8. 8 _# A, y: i( |9 a
  9. from tkinter import filedialog
    2 [5 A4 k: d1 ]8 T& i\" S/ i/ N* Q9 ]
  10. % R* x# c5 L+ u- |
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():' Y, ~& m) F9 N  L* N1 @& j

  2. : x+ k/ a9 W8 _2 p: P( n
  3.     file_path = filedialog.askopenfilename()
    $ ?% \4 K# v6 Y: ^! [+ m: C

  4. - H$ T) |7 e' {( G\" Z4 b
  5.     # 在这里添加代码,处理文件路径
    2 B: f8 ^/ \  R+ M# W

  6. . o& |3 Y: S/ d' L8 a9 U
  7.     print("选择的文件路径:", file_path)  U1 z1 z* O9 W2 m! `& i; u

  8. % C& w4 E9 w\" l0 I  C/ O1 p1 U2 k
  9.     return file_path
复制代码
  1. - A\" K- Y- a4 r$ Q+ c
  2. # 打开原图像
    ( `) I$ N0 O- e: ?* A

  3. 1 \( S8 p8 e+ y4 @
  4. # img = Image.open('image.png')\" q( f9 ^1 o0 y# O3 }, I) H4 B6 L
  5.   {# \6 d2 z\" D
  6. filePath = open_file_dialog()% X6 g0 o) W1 @9 @: Y  v
  7. 3 G$ a$ Y7 i4 ^) S- j
  8. img = Image.open(filePath)
    7 J\" a! o  c7 z

  9. 4 `9 D\" p4 d2 G7 g; {) @) L
  10. # 设置增强因子, v/ y7 m: X  B* R! ]
  11. ' v! r0 c' o3 }
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    5 |$ Z/ r- A# B7 y* Q8 q9 L
  13.   r( J* q' V: P8 A1 M

  14. , J8 J; g! d3 Q+ i0 K$ w/ U5 i) n$ u

  15. 0 W0 y) t$ ?3 U; A8 X% R
  16. enhancer = ImageEnhance.Sharpness(img)
    0 j3 B7 L( l7 @  r( a. u+ V
  17. . h/ f' @, x$ u0 R/ A& C- J$ D1 A

  18. $ w, J' y) L/ z( U& {& R, u
  19. + I2 M( \9 [4 G* P( n\" F4 l
  20. # 增强图片8 W% c4 L+ ~9 j3 E  }' d/ \3 C& v
  21. ; d. Y! K' l. q8 Z; z* `
  22. img_enhanced = enhancer.enhance(factor)
    0 [9 X4 ^4 d& P4 ^+ g

  23. 6 Z: _6 ~% O9 K3 v5 \- V
  24. 8 Y- T1 K, k* n* f; L  K

  25. 9 y  _- l. L. [% W/ c
  26. # 保存增强后的图像
    ( a# r\" q6 H+ I& M- U+ P6 p
  27. 5 u+ ]1 J7 m* @
  28. arr = filePath.split('/')% Q( @\" I4 a8 A( T) U' v
  29. 2 T+ K' S5 B$ p9 w+ e
  30. i=0
    # J, M3 [, x/ ^: O5 e* Z, \6 v
  31. # v' S8 \) q0 d/ _# E. x
  32. fileDir=''
    ) ?1 y9 P  d6 Y6 m! m2 f2 z

  33. - n  A% a, c+ [2 C; R
  34. len = len(arr), b) [& d* H  {/ C! c! m! [+ ?
  35. 9 ^. o4 h+ }- e: w, A/ @
  36. while i < len-1:2 v% m1 [7 [7 E' E
  37. \" E1 W+ h; M2 K5 _
  38.     fileDir += arr[i]+'/'
    3 e' R# ?: m: V/ r

  39. \" \1 b& p; c3 V
  40.     i += 1% d3 F6 {+ T$ @8 P/ J\" S9 x
  41. $ B/ S8 T0 T) C# a4 d. S3 T) J
  42. 7 S& o. K% A' v1 x% L

  43. ' O  p* ~  W4 U- U* U1 j
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1]). ^! T  ?8 m4 \- d, X4 y7 L5 i

  45. * ]1 @2 A  K+ o
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:+ i% n' `2 Z5 |% y1 y. E% d: z

- G  e2 w3 I, M增强锐度
  1. from PIL import Image, ImageEnhance8 W$ O  R2 Y& `  I! ~5 z: s0 M- C, k7 |

  2. 2 F( h+ e- O\" L. c# w( k\" ~
  3. 7 `1 \6 q4 ]/ U- W9 [0 ~

  4. + q% U4 O; V& W; _, N/ x7 Z. j; q. A
  5. # 打开图片: g8 K# F\" g/ U9 D, r. _
  6. , u# m, g' h3 M% f, c! c2 x9 o6 _
  7. img = Image.open('image.png')
    / s  D. N# |% y0 g8 d6 n

  8. & F6 h/ t2 O+ U$ F% c
  9. 3 \9 Y* Q: P\" F7 _

  10. 5 O+ b8 F4 f5 w( d
  11. # 增强锐度& P6 p, _, ?  R$ z3 B$ U# {

  12. . d$ t1 A* e; l: ?6 a
  13. sharpness = ImageEnhance.Sharpness(img)  i3 f( p& T& t/ Q( E# t

  14. . O5 D; X* E8 Q6 A
  15. img = sharpness.enhance(1.5)
    : F3 D$ g) U4 P0 G
  16. ) z& Z1 Q. x6 h% A( W' k: d+ B

  17. 9 x% [, ]& |  n2 z7 i
  18. , y2 x; k  c2 p% F. X. y' `. j  U
  19. # 显示图片
    0 R& H5 e7 C# k! f, H2 Q# M

  20. % B5 i5 n% d# ?+ v7 Y2 Q1 B
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance' S: L# u% u. Q* N8 Y/ S6 f
  2. , }! B; ?4 Y& k
  3. $ l/ h, i' V3 E# p' B, Y% |) i

  4. ! k9 D7 K# P6 J' f1 `) r, I& O
  5. # 打开图片
    ( {\" X  e' ~, Z1 h\" a9 r. H1 S( i
  6. / r; H7 H) J' p; B, ?* h& {
  7. img = Image.open('image.png')
    0 [+ u1 s\" k4 Z3 O  }9 u

  8. ! W9 z) F1 S% @0 ^( F8 G8 ~# D

  9. 1 L8 M( ?6 |6 Y+ x  e* \
  10. : z# J* C  V4 n( M
  11. # 增强对比度
    9 ]9 d& }; O) [* t) i/ P0 S7 j# ?
  12. 6 O8 E* p0 u7 R3 T- i
  13. contrast = ImageEnhance.Contrast(img)\" X# Y; {: q/ _% A: ~( Y2 g
  14. + S\" J7 i( B) I8 s
  15. img = contrast.enhance(1.5)2 }- G3 G6 X7 R* a) @7 l! O

  16. + J0 I8 D3 x8 y1 ]\" A

  17. ) T/ l! B* K6 L
  18. 5 {& N4 t* M) E! A- X5 V
  19. # 显示图片
    & W; t: [4 S5 p( w* v
  20. 0 a) Z- {$ I0 W% U
  21. img.show()
复制代码

$ ?" v! l+ p  \0 j. 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-4-20 19:47 , Processed in 0.399716 second(s), 51 queries .

回顶部