QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件( [) ]$ K& a3 [4 _3 q  h& r

  2. 4 I) c0 [+ q- ^\" p2 ~4 R
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    4 Q. r# f) M2 E7 Y, K/ T& |# J6 N
  4. $ U0 o( w, X9 ?7 p- X$ k  j- j, b
  5. # 增强图片
    9 {/ Q% B. Y$ Y) p\" [\" M

  6. $ S/ E0 i4 ~2 j/ s- n* z
  7. img_enhanced = enhancer.enhance(增强系数float)
    \" t8 g# ~4 M\" Y+ Q

  8. 4 y0 o) U4 }7 H; J\" I- C
  9. # 输出目标文件
    2 m5 l2 }: F: p$ a# c5 v. Y2 _0 D6 p
  10. , b* i. O' B3 q! f1 w
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
2 N% `& B8 I2 w! T: L
; m3 s; r) R4 ?! b$ b1 r5 g$ \6 R所需依赖$ u7 Z$ R8 B3 `5 X/ q$ S& B0 |
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog4 j8 V* ~, _# W$ c
  2. # _5 `1 V9 j' z- Z6 t) l8 X- N! V
  3. # 增强9 H5 T3 w. g7 g/ Z* P: C

  4. ' K8 t+ s) t; M; g$ L
  5. from PIL import Image, ImageEnhance3 |1 M% @' J8 S9 n) b3 v
  6. 5 S! C3 p+ r0 e1 q3 f5 z: H* j
  7. 代码实现* v% g! n: V$ }3 b! m% V1 V
  8. 0 }. o, g, l2 Q8 ?- o8 R
  9. from tkinter import filedialog
    1 Z$ e3 G- h; R( f! C( x- c

  10. 4 Y  D, B* w; d) @, \% t1 k3 E) i
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    # c, z\" y* d& M  I2 V8 L' I

  2.   V3 x* {5 d* w( ~8 h( O; T# V
  3.     file_path = filedialog.askopenfilename()% x4 r$ Z- a& L

  4. $ e5 t, O- k- u! r
  5.     # 在这里添加代码,处理文件路径- }6 M3 W4 H' ]) F% d
  6. \" X, ^' x  W+ s
  7.     print("选择的文件路径:", file_path)4 W$ X3 _& y  X! `% O, F
  8. , e8 O6 y5 o( `4 Z
  9.     return file_path
复制代码

  1. & w6 ~0 y5 T; ~8 c* u* b
  2. # 打开原图像- V2 d4 n\" ]( X5 H' P! k
  3. 7 J$ a& ?  |* q7 U8 p
  4. # img = Image.open('image.png')
    + p/ ?' l) @7 P% h6 d) B5 V, `8 V

  5. 6 ]  {+ T; E  s: A9 a% }8 ?: _/ M
  6. filePath = open_file_dialog()
    \" q! [) p3 a( P) F  K
  7. 2 `2 s4 J. W2 Q% U. r
  8. img = Image.open(filePath)+ C, m. L9 _' }+ t# i5 g
  9. - ^/ \, Y9 Y6 l$ O- o
  10. # 设置增强因子
    4 |2 O& E! H4 s$ E. E

  11. 5 h7 q& N0 F$ G: `
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    3 Y6 Z' ]/ W5 ?* O' L9 H

  13. ( ^! Y5 L, P  z8 }9 ~\" j& n% |5 c

  14. 9 N9 `. p* ?+ |
  15. ( K, L5 y/ n. N! H8 S' o
  16. enhancer = ImageEnhance.Sharpness(img): H# B- [/ v, W6 O( _! }0 N
  17. : _/ k8 L' p) i\" L% c5 F3 t

  18. 1 n0 T4 ?, Y! S4 j& V& |
  19. 0 @. M$ R; R& h
  20. # 增强图片
    $ \6 t2 H; L4 M5 h; Z3 z
  21. 1 U: n2 L. B/ H. D$ P+ ?. V7 v. }  u
  22. img_enhanced = enhancer.enhance(factor)9 `* s: ~* t, `0 \
  23. $ r. L( q, i( m; R8 A6 v) h
  24. * {  U9 M& m! V* c
  25. . o2 |: r% x% G. A& R
  26. # 保存增强后的图像9 r/ z3 T. ?! b6 h: ]
  27. ! W+ @$ C' C  g8 Y+ K
  28. arr = filePath.split('/')- o* Y- _* s% r0 t0 j\" y% N

  29. 8 c: e\" k7 P! G4 J
  30. i=02 S( m\" Z; |9 W5 ?

  31. - Q* B+ h4 W' w% l. D5 y
  32. fileDir=''* l3 F6 d: A, g/ i7 {2 S  M% o

  33. 2 h6 L2 L3 X. i' Z\" z) {
  34. len = len(arr)
    ' j3 u, e- W' b; z7 ^- X0 f$ b

  35. * m8 j4 i3 N' p% W6 J8 L0 r
  36. while i < len-1:
    ( ~9 @; Z) R, b+ c$ H1 b8 x+ Y* d: S

  37. 8 Y5 d6 N, T1 c6 I
  38.     fileDir += arr[i]+'/'
    & A. [( b0 j\" S3 ?0 [+ Q

  39. % S  t5 m9 }5 ?5 e3 W/ F+ L4 s
  40.     i += 1% t: ~+ a9 e1 e; k; X
  41. # \1 ?* q4 v/ q' h/ y. x0 y& O

  42. : @% L- O7 r( g, J: ~- Q, |
  43. 2 F8 F/ Y6 k- O$ r8 \( t7 y; F6 g  }
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    6 Z3 p. ]7 N  l& J9 [% _1 j

  45. * B6 K- ~0 L, d8 v
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:' {& h8 Y9 s% I
# G4 {+ X" Q, P( F, A. g6 A( H' V
增强锐度
  1. from PIL import Image, ImageEnhance! F1 Q  C9 S- Y% O' r) [# P/ T

  2. 7 F4 Q' `+ X$ b

  3. 3 I; B4 i# [& ], A: M

  4. 0 Z8 n9 {; x+ y. r2 n1 ?
  5. # 打开图片
    # O  Q4 Y0 k: C$ z\" N8 C
  6. 2 B; ~' J8 P9 X; {' D\" L& o0 H\" [
  7. img = Image.open('image.png')0 W9 U5 i& f( U( i! w, \6 P

  8. ' }0 X5 x7 x! D5 E# M5 E

  9. 8 N* o1 u6 ?( Z0 ^
  10. ' u( u# k1 b4 K: |/ d. a7 i+ L
  11. # 增强锐度
    , `, P; b: [2 m
  12. ( K3 a' y. o5 U! L, P4 C1 e
  13. sharpness = ImageEnhance.Sharpness(img)+ _) `! M0 L& }4 |- }\" e# S

  14. ) T% s2 H1 G+ H) s5 j6 Y2 t
  15. img = sharpness.enhance(1.5)
    3 p, D1 A4 ]) [+ U  \, x7 j. [

  16. : ]9 |; v0 i* E; i1 D- s
  17. / A$ ~3 u/ G) a, i

  18. % N) M9 W& N6 l6 X4 q( @& I3 ]% \
  19. # 显示图片9 i0 r' O9 i& V* p8 }( r( i' L6 ]

  20. ( Q6 v1 B1 f\" {( o
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance$ n- ?& L, O# n! s8 z

  2. / L) a\" p& R8 F6 x# W
  3. 6 F5 B2 ^\" \5 p3 ~1 O
  4. . x: C) o$ e* Q% e$ G
  5. # 打开图片
    5 H6 ?$ t. _$ h' y
  6. 8 k  F! u8 V+ c0 g! i
  7. img = Image.open('image.png')
    % a/ @  B- s; G* P
  8. 5 ?3 j, f8 i' Q\" J% q
  9. 0 u8 t6 a; b9 K7 h8 k
  10. 3 @! A1 q6 j% V5 }\" @
  11. # 增强对比度
    . }' }2 `5 W% `2 a

  12. ' Y3 H/ Q0 C. l! U) w+ s
  13. contrast = ImageEnhance.Contrast(img); c' [& `! C8 B, m7 W- G
  14. . B. o# n+ A# `1 f* {3 S
  15. img = contrast.enhance(1.5)
    - ]* P2 |5 X# R' l

  16.   J\" t* y( b. [2 K/ Y
  17. . R$ U2 p2 _9 d; V$ T, S; K

  18. , ~4 H5 }( G; ?( j\" g
  19. # 显示图片+ U: ~6 j5 K+ q9 I. w$ z\" s

  20. 3 Q\" V! j1 A) ~
  21. img.show()
复制代码

3 R4 q- B* ~  Z6 a4 ]( r1 |6 V& k
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-15 01:50 , Processed in 0.443550 second(s), 51 queries .

回顶部