QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    , K- j9 h4 B: ]
  2.   J6 Y1 q6 S0 f: j
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
      P  j7 n: u0 S3 i/ m+ K: o9 X
  4. 0 |, t1 C2 O3 z
  5. # 增强图片
    : O/ d% _* L2 ^5 @& r1 s
  6. 0 j  B5 J$ z+ F! L
  7. img_enhanced = enhancer.enhance(增强系数float): }6 r- h& V2 }0 T. i
  8. . u9 f, a% a$ Y( H7 S- {% q# ~
  9. # 输出目标文件, j/ {3 `' G# k( }' w\" |8 q
  10. ! d' l\" l* f/ u4 ~( g% _2 B& a- i/ s
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致+ t' A, u- W8 U) o) g" w; m
2 e' l: a# o5 G( I
所需依赖9 c5 i% f5 |+ \( `0 p' B
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
      G* T0 `- a5 `, l. c

  2. ( p* r# T+ v+ A4 C
  3. # 增强
    2 e- m9 r4 O) R/ r
  4. \" n7 j- v+ R( V6 A
  5. from PIL import Image, ImageEnhance
    : \# Q9 ^+ r; R& e9 J9 A/ q

  6. - I: P! N# n3 Z8 H- P3 V
  7. 代码实现1 I% H7 y% O  |; I2 Z3 C

  8. & A9 S9 @* O5 o7 U9 T) ^% j
  9. from tkinter import filedialog/ q% d5 C# j# n5 O5 i8 _- U' @9 q

  10.   h( L) Z% E1 w- O8 x
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():1 u4 _1 N! M, g( d
  2. & t+ ~0 v6 A$ B/ B( M3 K/ O( E7 Z
  3.     file_path = filedialog.askopenfilename()
    2 w4 z! g6 o+ O5 O4 s: \
  4.   s; G4 g' X2 b0 z; o
  5.     # 在这里添加代码,处理文件路径
    6 H! C7 J# s& }$ Z! ~6 z

  6. 8 C. A! {, F8 G, N. v, |. D
  7.     print("选择的文件路径:", file_path)
    \" Z2 J5 x! _4 w/ T! K

  8. / j4 P& q! X8 k6 B# y  W* h
  9.     return file_path
复制代码
  1. : e\" T) f# S\" u/ h% ^. P6 G7 {3 v$ W) D
  2. # 打开原图像
    $ a; V: {: [$ F( w% g
  3. 1 |. j; e, Q& Q
  4. # img = Image.open('image.png')
    / d- I4 E, t) l9 l* f

  5. ( W6 ^- T\" `; i
  6. filePath = open_file_dialog()1 v+ r% J, ~. Z9 j. m
  7. - J' X3 `4 g\" k4 Z1 m1 {
  8. img = Image.open(filePath)
    . Z# S\" X) f& C. C* d# `

  9. # F) N8 s7 [: P$ i; E& D
  10. # 设置增强因子9 H5 r& J  y7 u& @+ m2 Q

  11. 9 \3 k' h% O, U\" x
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    # ?' h3 L/ E4 f9 b' _

  13. ! h' u# T, b1 J; p' Z- q

  14. ' I& |* h% G. K) X2 g+ U; r: `
  15. 7 q$ B3 ^9 Z: S9 A- B& X. |
  16. enhancer = ImageEnhance.Sharpness(img)4 T; p( T1 ~. H  E7 d. W; n9 R7 D# A% S
  17. 5 b' A+ K8 e& a, {, `

  18. \" s0 L: Y: F4 W4 \- W

  19. ; I* G% L, e  q# u
  20. # 增强图片
    * E0 V2 s# d+ X2 x8 B& Q& g
  21. 0 o- g: r3 ~, W) f* N
  22. img_enhanced = enhancer.enhance(factor)
    9 y; q8 Z, C$ R
  23. % C9 D) }9 o; q
  24. ' @\" S/ X+ j/ l- v\" S. R5 q2 q

  25. * d\" x: {6 b. O- E% ^
  26. # 保存增强后的图像6 y, C. L/ y2 C/ Q) L\" q3 q' h

  27. 6 ?& }2 s$ N- I0 V: `1 d& G1 T
  28. arr = filePath.split('/')
    . o) z* O: `6 s
  29. 0 v5 P' I* T; p8 N\" }$ K  U
  30. i=01 ?$ n. a! d- `+ W\" n! f
  31. & ^) N& h: \# ^. H; c; i7 w
  32. fileDir='') ^2 _. v- b; @7 G( `\" b# d

  33. $ p# |$ W: R8 n1 N1 N8 X
  34. len = len(arr)\" h6 E8 r4 B& H. F, G& \4 V; b
  35. 8 K& j3 ]% G% T4 I* E
  36. while i < len-1:- u+ u9 y5 [7 X( O3 Z: ?& Z
  37. $ D: ^& C. d0 Q+ ~# A
  38.     fileDir += arr[i]+'/'
    ; `! W- t, ?9 G

  39. \" x7 N\" F( m- \% W# v* p0 o6 q
  40.     i += 15 d: t/ v. B: q5 j* L

  41. 8 H( b5 R  f% f7 i

  42. $ f% W8 w, R) \& G8 o

  43. ( w; |' [0 o2 _$ d8 f8 u
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])3 v1 X. y' f- E& `

  45. ( l9 k3 m- ]; T! ?+ Z( C9 d
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:& u$ N" U& n+ v, e- B% p
, _; Q" k1 t8 \6 K$ f
增强锐度
  1. from PIL import Image, ImageEnhance6 s3 _1 K0 Y* s! D* d

  2.   Z8 z6 B1 \5 H$ ^7 `

  3. 8 S; F+ O+ G\" P7 J# T9 q; H\" c
  4. , K/ ]7 G3 g1 U+ \4 U% Z
  5. # 打开图片
    . s( p+ B6 t. ^3 {; t

  6. ' c- a8 r$ y: H3 l
  7. img = Image.open('image.png')
    1 r9 t) T8 [/ T  L4 @

  8. : r/ L4 A# P# F& H: v\" P9 \1 J  b

  9. ; t  L: E5 t! G' }8 c

  10. , y* T) d9 o6 w  U- Y+ e- D$ l/ A
  11. # 增强锐度4 n/ h. W! a: O3 S- w\" h

  12. ) q% w4 C* {! q1 W3 y  o
  13. sharpness = ImageEnhance.Sharpness(img)
    ' q  ^& h* A1 F$ z9 h: x  P
  14.   Y. ^2 I3 T$ M$ K
  15. img = sharpness.enhance(1.5)
    4 e/ m( t+ N* K& J9 Z

  16. # V8 W9 Z# A5 }, K6 N. ?0 E

  17. * i5 q5 p\" i2 s

  18. 4 y. V& C7 B/ Z8 t& P9 H1 p$ s
  19. # 显示图片
    ) q6 P' m/ b* d& Q
  20. 1 m, L: {0 A% J0 R
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance/ ^' Z3 x) ]3 I; Y- u/ V8 K
  2. # V9 X2 t/ T- c# D6 H0 K
  3. ! }' Z5 U' g! v* c: d* s
  4. / ]  v# n* ]5 k' e9 m: m# l
  5. # 打开图片
    7 o9 p5 p$ B3 U: m; b
  6. * h5 S6 Y8 E. D9 V. M& p# E
  7. img = Image.open('image.png')
    - c6 C; @3 z9 i% p- D

  8. 6 W9 I; I7 k; v! g/ Y
  9. # b. c5 q/ D. t; Y, H! i
  10. # a\" L3 W\" N' l
  11. # 增强对比度, ~7 v6 T; [( w* e# _, g

  12. ! ]5 q$ {- x5 g& H\" H( b$ W
  13. contrast = ImageEnhance.Contrast(img)2 e* o$ y1 n) W* L& r* M7 j

  14. % I9 u! B4 `\" m& V$ }; A
  15. img = contrast.enhance(1.5)1 d$ u& L+ g2 M

  16. ' j1 y% H* X, C
  17.   P$ q\" ^1 ]7 t6 A# j7 `

  18. 0 J; n; r% U8 L7 f' b) k
  19. # 显示图片
    3 A9 s6 V: }# c5 n3 X
  20. 4 i/ Q$ _\" h\" V: Y
  21. img.show()
复制代码

5 p* Z# Y# \" u
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-10 15:28 , Processed in 1.586345 second(s), 50 queries .

回顶部