QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件\" N; N0 C9 Q1 o9 \3 y. ^1 o8 _

  2.   S. r- A% |/ A3 [: j\" E3 f+ x4 x1 ?
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    7 U9 w1 Y% W/ N6 Y8 t4 Y

  4. % @7 o; D, I# p5 m; ^+ d
  5. # 增强图片3 V; p. A! N( `, R6 u1 Z

  6. 1 _5 c\" c) C: p2 A1 `- K
  7. img_enhanced = enhancer.enhance(增强系数float)8 {  U* |4 v1 B5 A
  8. - R# h+ ^) u8 k
  9. # 输出目标文件6 L$ T# G; Z7 _) @7 T3 v  s
  10. 6 q4 n% ~# {  L% S. s0 {
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致% w4 y/ z* x8 _. f; P! i
. L9 N! |; T4 f. x0 k
所需依赖
, z% I  y+ t- p7 x/ e# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog( \% d  h8 }6 U) V) E\" \9 \

  2. # s4 G8 f  s' ?) z4 m; K+ @
  3. # 增强% \7 O: r& P3 j6 f% {$ i
  4. & n\" m6 G, ?6 W* H' a/ ?5 V
  5. from PIL import Image, ImageEnhance0 F8 ?( I! R( f! F4 h
  6. 2 B: Q; J* R/ g) _, {2 @
  7. 代码实现
    % S0 J. v5 n0 ?\" p6 S( g0 \) c( N
  8. 2 Q; x: d, u. W$ y# F
  9. from tkinter import filedialog5 Y- K& v3 {8 N3 l/ c
  10. * P- [: s* u7 k+ Q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    : c5 e1 ?/ r: e; [

  2. - @$ v: W! ^1 z\" R2 I
  3.     file_path = filedialog.askopenfilename()5 X! }5 k( [& o- D6 [9 v- O1 X

  4. & k, x& S1 z4 R5 F- ?' n
  5.     # 在这里添加代码,处理文件路径
    ; ?$ I: g/ b1 K3 H' [# z

  6. 2 s' c8 M- T0 `7 O
  7.     print("选择的文件路径:", file_path)
    7 {( J9 h2 r; G( w: U4 Q
  8. ) w9 L  o$ z! g+ D& i
  9.     return file_path
复制代码
  1. 6 Z' \: [7 x7 q6 F
  2. # 打开原图像
    + o8 {3 m- ?; \$ F5 i6 ~! W, E
  3. 4 E/ M9 f4 o. C4 I# t$ B
  4. # img = Image.open('image.png')' ]8 b0 k  v$ u+ x
  5. ' |7 Z) ~' d; g& a) P( N; S3 X
  6. filePath = open_file_dialog()* j' C0 a7 _8 N' c; d+ F

  7. ; z0 q+ x- \8 {& w9 i
  8. img = Image.open(filePath)
    2 a! H& v* I( E7 e, x: f
  9. 2 t* }; b* i( c$ c2 a
  10. # 设置增强因子6 q* ^+ F; u) F) O% ?
  11. $ w+ x8 S- W/ C3 U2 _
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    ! B9 j2 [. e% m
  13. & N( W4 v/ \\" [$ e\" G* I9 D

  14. : s% c! P, e+ ?: B
  15.   @3 J- X+ }7 [* e# T% p4 H
  16. enhancer = ImageEnhance.Sharpness(img)+ F7 L& X0 I4 q9 p' P. _3 W\" `9 s; s

  17. 3 N\" Q* Y1 ~; J8 ]! i

  18. 8 K8 r' z) P, L\" `- k& _% D
  19. + U\" i: ?/ P& L7 m8 h. H& G0 C
  20. # 增强图片* r) ~0 \. G5 e3 P7 E! f6 S$ A

  21. 6 n& F8 @4 T# B; Y: S
  22. img_enhanced = enhancer.enhance(factor), e5 q' m+ a& Y. }% J5 [
  23. ) w5 p7 H2 J7 }0 {/ L

  24. . }1 X) b% z# @( L; [: ?7 F; k
  25. 7 _3 P4 [; k& L6 v1 P
  26. # 保存增强后的图像
    $ y3 j8 V$ f  u2 I- m

  27. ' j$ J* Z. W: d& i; E5 ]
  28. arr = filePath.split('/')  y. b. J# n' U# ^5 i+ M
  29. ) p$ ]8 c' ?4 n' x3 R) F, n- m0 t
  30. i=0, P+ Z' A$ c8 ^2 B7 {5 `; }1 D

  31. 5 v7 @# ~5 U8 h+ T4 x
  32. fileDir=''
    0 b5 C  H1 ]5 k% G4 E$ Q

  33. 3 [8 o( Z# c$ b7 j9 W6 O  ^. W0 Q
  34. len = len(arr)
    3 j% m) T5 o3 P4 \& N1 h
  35. ( k- B# ~# ?  b9 k3 [9 w
  36. while i < len-1:2 c# q8 I/ }9 L# q: W5 p
  37. ( d6 M  z6 S\" h! l6 o\" M- g* o6 O
  38.     fileDir += arr[i]+'/'$ Z. h* h5 j1 E& v

  39. : F, a) U6 P0 ]% f2 k\" Z
  40.     i += 12 _* [8 ^; m8 h) r8 p1 W
  41. * Q! ?. A+ T1 U9 K7 c+ ^\" g2 \( N
  42.   w5 v. ~0 f\" Y) n' @
  43. 0 M  s4 v% Z& L
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])/ w9 m. I5 w& |% C+ ?# Q) |

  45. 6 H# \/ N: C. O8 @  F
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:! U/ O; G, [; c- x( ^7 e* ]* r
! p+ p0 ^/ K7 x9 _8 S+ U4 S
增强锐度
  1. from PIL import Image, ImageEnhance
    - M' B: X4 g0 j2 M& ?9 o; m* q

  2.   W: O, _) p8 u. Z: L% S
  3. . n  y9 l% P6 }5 v( I( k

  4. 8 p& J4 F$ X) s  D9 N
  5. # 打开图片8 @8 {/ w9 V, p* j+ Q. r( a1 I
  6.   S+ }/ x, [4 l) i* }' y' G
  7. img = Image.open('image.png')
    : n\" C$ m5 w% ]* h8 @) O

  8. ; \/ M- S, L4 h$ y8 U0 q( a
  9. \" Y: J- z/ e$ O; ^
  10. 6 Z# ~  G. I/ J1 t
  11. # 增强锐度% g2 Q2 }$ _9 R# v\" ^0 U2 A

  12. 7 o$ ~& ]. I6 K3 r' C$ F
  13. sharpness = ImageEnhance.Sharpness(img)$ B% g. Y. W, V* Q6 n
  14. & |) G# z; K& I
  15. img = sharpness.enhance(1.5)# [8 d: x3 C) v  w  M

  16. 0 p8 {* @; n5 N3 X, b
  17. 8 k8 x2 H+ Z! u& ~: Z8 c
  18. 4 f7 z* e2 h9 ?& E) y! k0 b
  19. # 显示图片0 |; j0 B! l  z
  20. 8 C) A7 O5 f1 p) l( a  y! s
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    ' j$ ]( R  T4 Q# F' }8 k

  2. 2 M. ]* P& S  Z! L( z1 B
  3. ' Z0 b. m2 D6 r3 N5 f( Z

  4. ; {\" d' P\" o; N( x7 K/ e
  5. # 打开图片' [8 G+ C4 {, p

  6. 0 ]# f+ e4 }' Z! u) a
  7. img = Image.open('image.png')0 b2 ]  d- c: c) U

  8. 5 ?/ F- y& h6 Y: A
  9. 0 H6 S& O. G+ k  w; N! d  r8 p
  10. ( \# [) Z; X9 [. H$ ?/ o/ q\" d- R
  11. # 增强对比度  I- Q1 t/ [2 s; F# [
  12. 8 Z3 X; t1 a) H* w% h3 `
  13. contrast = ImageEnhance.Contrast(img)0 g9 J0 _1 h& p' ]2 q9 e8 |
  14. 7 Z6 ?* e' x! R
  15. img = contrast.enhance(1.5)\" Y' G$ P7 |6 {7 F( _

  16. . N; i% l$ J7 u% W\" Y  Q
  17. + n! I7 g/ c7 f: h
  18. * `& E0 _' s\" Z: r4 J  \, K
  19. # 显示图片8 Q3 _+ p( l2 x- s
  20. & {' S0 i, w% U0 C0 h1 B
  21. img.show()
复制代码

- u3 s: m- ]( C6 O! n' q" c6 W
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-13 23:54 , Processed in 0.392718 second(s), 51 queries .

回顶部