QQ登录

只需要一步,快速开始

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

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

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件  ^\" u: M9 i) o
  2.   G$ I5 ~3 u\" l! ]4 O# p
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    ! }; `& t1 d' q/ {% u, i\" ?. E

  4. 8 d( B3 \8 J* j; Q) s4 L
  5. # 增强图片
    ) m' O6 K: |) N+ S6 b+ V

  6. 0 x6 S; B$ p; P! t, N1 s2 U: q
  7. img_enhanced = enhancer.enhance(增强系数float)
    . t3 X+ p! h  i
  8. $ B! f2 l9 M% i- o, b7 x+ J; t
  9. # 输出目标文件9 e  i4 W' K2 {, z1 Z( C& b0 o

  10. 8 u1 q0 Y% E9 a8 V; |
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
9 |# v1 W# N% A0 g5 _. N/ M8 c. F! W8 \* e. Z
所需依赖
# ?3 j$ Q, ~7 Q  a! N. @# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    ) y/ r3 k: N- j9 Y* X. J

  2. ) e3 D1 W2 c+ G+ u% f* o; z7 X
  3. # 增强
    ) T# p2 W; R8 w5 G3 l  g! ?\" U
  4. / B% x+ H& ~; J; K: S6 X
  5. from PIL import Image, ImageEnhance
    % o. C7 ~- ?2 s6 d( ?: k2 b! z/ E

  6. ; _' Z% y- i0 Q
  7. 代码实现
    + i! o- b% u4 j

  8. + K- F8 a1 ?; e$ u# y6 M
  9. from tkinter import filedialog
    * G* p+ }/ A& t* b* m/ l3 H8 J* p  o

  10. ' A0 T4 ~# M5 H) Q' ^7 Z
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():! ~, S) l\" t/ l2 k4 m/ h) u' x

  2. ( [: K, _& ~; b% U% f- `4 w! t
  3.     file_path = filedialog.askopenfilename()2 S7 Q/ F; m' U0 i  J1 F: W

  4. : ?) H# c4 V4 m% A& \
  5.     # 在这里添加代码,处理文件路径4 j) |7 z& c, ]6 s& |* Q; J

  6. % K7 P3 N# b* @$ e
  7.     print("选择的文件路径:", file_path)4 b# I( _: q0 c* U
  8. 3 K, n\" S% Z+ N+ Q
  9.     return file_path
复制代码

  1. ! E7 c2 q# b+ [5 W5 {
  2. # 打开原图像# S: v5 f) Q+ \5 L4 \$ y1 V- ^\" M) F

  3. 5 c% E2 w\" h, S* _# ~; f4 |
  4. # img = Image.open('image.png')! G3 r. x2 r- V0 O3 C$ z7 s

  5. : o3 v9 P: F, ]3 e# t+ [0 m' F) {1 R
  6. filePath = open_file_dialog()+ l$ U. D  C. w- O
  7. ! r) |) a+ s$ D7 H( T9 c
  8. img = Image.open(filePath)9 a' s. o# ]  {; U7 J$ h! d; R
  9. 3 f% |3 H8 Q  b, G
  10. # 设置增强因子
    8 `- ^6 Y+ e% n, y# _* I3 b3 p

  11. ' C2 |& H: j2 U7 F5 A5 Y7 c- a
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    ! Y: [$ H) z8 ~/ H6 A

  13. 2 g. j6 n\" B3 A5 C- P, n4 x
  14. * a9 K: ^5 Q# F6 X
  15. 7 S2 f* ^, y+ S5 U\" j+ h
  16. enhancer = ImageEnhance.Sharpness(img)2 h8 @/ @2 V8 j/ I

  17. $ P$ S( W# _- O: ^: T7 m: e* ]

  18. ' ^* r9 f3 [9 _6 e! H; I' a8 k. x
  19. 0 E! f, c) P1 |% n
  20. # 增强图片
    : p) `\" m0 }2 ~; ?
  21. 5 C9 n8 w5 m! G6 s2 V\" ?: G0 y8 ~
  22. img_enhanced = enhancer.enhance(factor)
    7 H. u; c: Z6 Q6 W' S

  23. / {\" A) Z: T4 x: T
  24. ( p! t\" b2 }& b) ]  ]
  25. % J5 d6 t( ?: E4 S0 q
  26. # 保存增强后的图像
    0 b$ E4 K( o) I7 j

  27. ' [: U3 m# ~: ^& G; s+ q4 C
  28. arr = filePath.split('/')
    4 h8 ?/ b+ V$ S6 c! ]4 [# ^( Y

  29. \" O7 y& w, ]% T- y' m9 P
  30. i=0
    ) F1 R+ K9 }: I0 D4 s# K! v

  31. 0 c/ }, Z3 A* x/ x4 a3 @
  32. fileDir=''7 V: h' `3 E; Y* D/ _+ {5 H

  33. 8 W2 Q+ F& O/ f5 b9 `
  34. len = len(arr)
    / Y$ V& o/ P& z3 p: c9 y

  35. \" X9 a5 x; i, N( l
  36. while i < len-1:
    : ?/ ~; i  [# Y$ u
  37. % H( D2 y8 {# ?7 o8 p* Q
  38.     fileDir += arr[i]+'/'
    6 }7 O; v. ~9 x

  39. 0 ?$ |# D9 F! d( e( N$ J* D; S
  40.     i += 1
    4 G+ R# h+ H\" m+ |% I+ I

  41. , n# o+ m. v) |  Y8 R+ R8 S1 D

  42. # e; l# u- v: [  l
  43. ; M* Z1 D' p! `! x% B
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])5 M7 L' u1 r- c5 z\" ^9 i: }- e
  45. 0 ]7 S; ^3 P$ A* v' X9 w
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:4 b% j2 a0 v( H) m" N% q% P+ h

* t$ e/ P3 P  U/ ]+ B增强锐度
  1. from PIL import Image, ImageEnhance
    3 l3 J: d3 D* K' S/ x' B
  2. 3 H: s/ W9 l% `6 r7 g1 p/ L) u

  3. # S# C0 U4 g7 B) N2 r) n- y
  4. : T2 }; ]7 n! a% a' @5 j, }. z: o
  5. # 打开图片
    , t2 m( A5 z* a( m/ t
  6. 4 K1 m- a& ]7 n( A& p
  7. img = Image.open('image.png')
    ' S- ^$ I/ [- _7 E0 ?6 C+ P

  8. * D7 N: s' Q& U( \
  9. + W3 O2 D8 j5 C  [/ C
  10. # J5 o9 h% p( D6 Z; V+ D* i. M
  11. # 增强锐度6 ?3 _% y5 m  I; n

  12. 9 f/ k* |& F) O- |$ O# i, C
  13. sharpness = ImageEnhance.Sharpness(img)) v; ]\" C9 K! n3 x\" B. X- S
  14. % g  N2 k, f/ o% M+ n1 t* T* v
  15. img = sharpness.enhance(1.5)
    ! Y0 y& }/ r4 T: P+ |& F

  16. 0 D: i, K* t$ H, l# u

  17. \" z6 [: n/ Y+ k% d' V. s. \

  18. 6 J6 a5 M* u! A% T
  19. # 显示图片
    ! j0 ]\" |1 S0 F
  20. ) k$ ~# z6 j# P7 m$ z+ w
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    % A2 O, Y\" x( K; c

  2. ! }# P% ?2 v' g, @# \; f+ t

  3. + l1 P- g) H% Y( S+ s6 P) U
  4. : ~  R\" L( x# G
  5. # 打开图片
    2 @6 B  B% h( P; F9 R$ C1 j
  6. - W' z2 V( e+ d2 b2 ^( H* ]9 ^
  7. img = Image.open('image.png')
    0 ?4 ]- e  x) W' g: p( H
  8. ) A7 H' v6 t* q\" w* T
  9.   X  J$ u) u8 r1 o
  10. ! t1 u$ n; k5 }# H( m
  11. # 增强对比度& W\" r: `, Z) l8 ^/ I\" Y! Q8 N

  12. * ~! a, i0 f2 {1 W7 q  T
  13. contrast = ImageEnhance.Contrast(img)) P. A5 S) ?/ w0 T- G

  14. ! u: \\" z, _& M& P  `
  15. img = contrast.enhance(1.5)
    % x0 b4 D, @& F1 L* e+ L( a
  16. ) F1 A1 c- c1 b\" d
  17. 0 ?; H  {4 u* }8 F5 d8 ]6 ?6 K
  18. 1 k- V. s4 n* ^4 p) W
  19. # 显示图片
    % L* L* C3 F# t2 z2 T+ C! p$ t1 k

  20. . D4 x( |7 T5 S- Z6 H9 O
  21. img.show()
复制代码

- ]& s( \# V, ^, L# B
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-8-25 19:53 , Processed in 0.347478 second(s), 51 queries .

回顶部