QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |正序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件' W* k$ F* \+ Q

  2. 0 x' S7 s\" m+ e\" G
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))0 }7 u2 t# ]2 h7 C
  4. 8 F2 d. j6 n0 E0 O) D) o
  5. # 增强图片. b- h+ {) j) m. T2 {
  6. ! j5 G1 t. j/ R; c* B9 _
  7. img_enhanced = enhancer.enhance(增强系数float)
    0 X* i% `$ n- h# o  Q; y2 ~
  8. + R7 q+ o5 w5 l7 ~0 y& c
  9. # 输出目标文件4 I6 e5 C9 G# ]  D% L8 h2 Y) v\" ~
  10. , Q. p. q\" s' m$ p
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
- C- Y5 H. ~$ Z1 l0 ^
" K  A! w% o3 I: l所需依赖
4 _2 v/ X+ p7 S& W0 U+ }# a# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog+ T% w6 m5 T  T) g

  2. ) O5 r0 Q5 n; f+ e; E- D! ^, _
  3. # 增强- _2 \6 K: r) D

  4. / U0 q: i8 g8 W6 L
  5. from PIL import Image, ImageEnhance
    ; L/ X, k* G/ o0 ?
  6. 9 l0 N* I# G% S0 h. g, p
  7. 代码实现
    : y* G/ H5 I& O6 f0 s

  8. 1 t. E+ b$ k. d4 C/ P
  9. from tkinter import filedialog
    + q1 A0 N9 A! M
  10. * K5 z9 L0 P0 O# _9 ]- f
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():+ P2 D/ m; v! z  M$ v

  2. 9 f; X' G* |\" C: m& E* l& @
  3.     file_path = filedialog.askopenfilename()
    6 t9 T: X. q' ?! d2 E8 W

  4. 4 m$ S4 O\" L, p  [4 G# R
  5.     # 在这里添加代码,处理文件路径
    5 Y( i\" O5 P3 ?0 a5 u+ t3 A
  6. & H. m& I! n& \  H9 {! z# R
  7.     print("选择的文件路径:", file_path)
    ' f  z* n9 h9 {8 E& _' _4 O

  8. 9 ~\" v\" b( C  M; c\" ^
  9.     return file_path
复制代码
  1. ' ^' ?1 D9 b: a- t4 p1 n  X
  2. # 打开原图像( A7 Z$ W3 Q) L/ g6 o( e
  3. * o0 T& V0 k9 f; D7 I( s& z( m( W
  4. # img = Image.open('image.png')
    + m$ t  e5 Z' \. ~9 R
  5. # Z( P, ~2 D2 x+ A) ]% [
  6. filePath = open_file_dialog()2 l/ F4 B( t0 c

  7. 8 X2 }. I, p2 o; r: U
  8. img = Image.open(filePath)
    / A  V5 N% Q; T! u5 C

  9. + G! T4 p( L1 e, t5 Q7 Q% K
  10. # 设置增强因子
    $ X' `6 X6 S) J8 V& h

  11. $ L+ ^8 e6 m! U' |8 a2 J1 z+ K( [
  12. factor = float(input('请输入增强系数(1.0~99.9):'))  d- \8 @1 b) T

  13. 8 h5 e( L4 P2 E# C
  14. 0 ]1 [/ I0 _; b4 B3 \

  15. 6 T2 ?# v; j2 c
  16. enhancer = ImageEnhance.Sharpness(img)+ W4 O. q/ S, {( n
  17. : z  l7 A) \& t; ^
  18. , v9 [, X+ u1 t: D* X

  19. 5 p! X\" r% \, x. U; B: w; R+ b) L) E
  20. # 增强图片% F, n( F& q+ \4 [+ ?* z, e

  21. 1 v2 V+ D+ s. [8 L( u  ]
  22. img_enhanced = enhancer.enhance(factor)
    6 l* k8 E4 k% C- C& O& r8 q\" ?% C
  23. % i* q+ G: S) t+ N$ q
  24.   B$ \2 W. \$ D- H: Q

  25. : l4 s2 f3 ?  ?/ B\" a
  26. # 保存增强后的图像
    0 d: m\" |' t) {0 z( L
  27.   }# X9 F; c0 u( u+ U+ g+ n
  28. arr = filePath.split('/')1 L' G- l9 t$ X7 f! m5 v. I1 i# }
  29. \" g2 {( J# k- h% Y4 @
  30. i=0! R1 H) ?# t& s+ P& S; B

  31. - t$ r1 e  e' u) B/ [- D; r' V9 ^
  32. fileDir=''8 g\" ]0 F, ?6 k/ c8 W& G

  33. 6 |2 u5 ?- L! [9 M
  34. len = len(arr)1 \$ |$ X# f3 z5 E  ?3 ?+ z
  35. 8 ?$ b7 O& u. b
  36. while i < len-1:0 t3 w, i  }2 F$ p$ _; x& g5 C
  37. ) k4 ^\" i, K/ O: f0 X8 I
  38.     fileDir += arr[i]+'/'
    ; Q. Z: d* K* |0 S0 {+ Q4 ]; E9 t
  39. + {. o* b4 ~% G. \) B
  40.     i += 1
    $ M# T% H$ S2 w. c

  41. 9 d( t& Y( U7 ]2 l) m\" q. N% w
  42. * W, w' v2 p; Q  Q) d6 f6 v, x; T
  43. ) i* t1 k$ X% P+ ]
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])& w- c$ a* q% W. `. q
  45. ' x, U- K  ?5 d0 ^5 g+ L* S- _
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:* x4 d7 L# a! m$ W5 X/ o" z
) Q6 s% Y4 ^! g6 H, {3 n* w
增强锐度
  1. from PIL import Image, ImageEnhance0 W* U, ]4 `\" w5 K, b8 X. i
  2. - T: d% ]. L\" K3 d/ ?6 p- g7 C
  3. 2 [$ l, {/ J- d+ w+ |
  4. , v\" b) s4 x  z  j5 Z) s\" p) L) W+ b
  5. # 打开图片5 g( z1 N9 V! i
  6. 5 {4 q8 R% L% @& z! D
  7. img = Image.open('image.png'), i( `( V, P\" u6 b+ g

  8. - q) u4 j+ C/ x. c' X/ W9 l3 |
  9. . M8 r% P, g0 \
  10. - {& Q: E. T2 {6 J% H0 l0 i3 H/ f
  11. # 增强锐度' u' Q. ~  l\" }! J, ]% E7 j0 N

  12. - n; l0 Q8 U+ F0 U. W8 c$ f2 v8 e
  13. sharpness = ImageEnhance.Sharpness(img)
    . C4 t\" X- O0 s9 E4 i3 S

  14. 2 M\" B& _( E- D. c8 S! F
  15. img = sharpness.enhance(1.5): l1 Y$ c7 G- e6 b# N\" r

  16. 6 v' v) M9 N  m6 H% P3 B

  17. % K8 b\" ~. B\" c) Q* X\" ]
  18. + I2 I8 J! |  O: V! ~1 Z
  19. # 显示图片
    \" x% m\" ?9 ?) @- m$ U

  20. , m+ ^' f! ^5 _: ]
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance+ @& X& o' u1 s6 S9 d3 d2 d\" `

  2. + e8 B; N$ U* U# `

  3. ! o) S, {7 \\" Z8 `

  4. , [/ F1 Z% h; e
  5. # 打开图片. A7 T% t0 i: E: D/ w' r; ]

  6. ( F* \- O+ [# N) S7 l. v
  7. img = Image.open('image.png')9 G8 G) X; A7 V

  8. 6 L) d0 s+ b/ e1 d) x$ @
  9. # _9 l* k$ Q\" m* A& T1 r) E4 T
  10. & h9 |& M3 m# F9 ^% O
  11. # 增强对比度
    \" S; l: S\" w  @- ?

  12. + Y  N: l# U# F6 U, L0 A8 p
  13. contrast = ImageEnhance.Contrast(img), N% F3 N1 l5 n; v1 ^/ C
  14. 6 m: H( w1 n3 K+ l2 i1 x! v\" \0 i& U
  15. img = contrast.enhance(1.5)
    ! [3 L5 \\" H. Z( e2 [, h
  16. 3 I2 h\" O+ R: k1 Y\" Z9 q
  17. , t$ i7 J1 @2 H3 Z; b- b1 Y) H# E
  18. - W8 e, @$ k. _  |
  19. # 显示图片7 C6 M- y3 i: p# y( x
  20. % G' V% c4 _5 K/ c* c- J
  21. img.show()
复制代码
9 ?  q/ u1 @- T& I& \
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-6-12 02:45 , Processed in 0.422128 second(s), 51 queries .

回顶部