QQ登录

只需要一步,快速开始

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

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

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

1176

主题

4

听众

2884

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件$ e1 ~& l7 c# p2 q/ K/ Z

  2. ' L9 v/ H. e3 r( i' I
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))7 \% ^& I/ S2 t4 T

  4. 6 u\" ?# y  P/ B- F0 W\" o) m
  5. # 增强图片& z( H6 S3 l! X8 F  I

  6. 2 `0 [2 S7 r( ]; S6 E. \! P
  7. img_enhanced = enhancer.enhance(增强系数float)
    * S5 B# S! q$ e! h/ r5 U4 m; f
  8. * n: P5 |7 P8 Q
  9. # 输出目标文件
    8 n+ m% Y+ v0 F

  10. 5 p, q* o! |+ x0 U, c: O
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致9 Y) v; `) F9 q
8 h( ^; R  |5 ^" d9 I" I
所需依赖9 j0 C' N9 Q: j( N; W4 J1 m( Q
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog. n& K2 t9 l5 D  k\" R+ H

  2. ; z1 L\" K6 p, d2 `1 H, l! s
  3. # 增强
    2 a$ f& \8 \& z\" ~\" ]1 n\" T\" O
  4. % p# m8 Q# N\" O5 ]+ ?
  5. from PIL import Image, ImageEnhance
    4 ?' R. U/ B, V# ^. f( h
  6. ) ?4 \' P7 P' w& b
  7. 代码实现8 I) M; ?  H3 ?2 `
  8. 8 }; u9 ^4 R% I  e
  9. from tkinter import filedialog
    , G* n# F3 K/ m- k  g% P) K\" p

  10. 0 C' _& j, o# O8 W9 S
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():, W2 c; @  v9 M3 g! H5 k
  2. 7 }+ [, N3 e& B
  3.     file_path = filedialog.askopenfilename()6 c1 U' x% y7 |2 U
  4. \" s\" o\" V# G  {! s. s7 D
  5.     # 在这里添加代码,处理文件路径' z/ H. X5 K0 ^/ b& \  x; g! d
  6. # V( i\" |2 ^4 _4 a* P
  7.     print("选择的文件路径:", file_path)+ a0 O& L6 @' p7 A! t8 B( Q/ W( E

  8. # c5 \/ F6 F  [  D
  9.     return file_path
复制代码

  1. ( F0 a! w/ ]$ D* v9 R
  2. # 打开原图像( ^9 b- Y- V2 E& }0 _
  3. \" K1 `& C+ y2 ~8 k0 u
  4. # img = Image.open('image.png')
    6 t9 K+ Y9 f/ P& Q  U# h
  5. / {# k0 l, i+ W
  6. filePath = open_file_dialog()0 E/ @9 w3 f  p3 V$ o

  7. ) f3 F) e9 r+ T5 ?8 V' U, P6 l
  8. img = Image.open(filePath)
    ' F0 x2 h& f) p+ G1 j, `6 L/ @
  9. ) E- W5 f1 m  F9 ?  e
  10. # 设置增强因子3 Q# _+ g: O* D1 B% J( \

  11. 8 j6 j: ?* Z. _: {- \9 \
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    ; q* e7 s- W/ M: Y\" E

  13. % q. Q' D- z) A% ^& |

  14. 0 r+ x2 U$ B) B& f0 X
  15. 0 v) q# I8 t0 [; z
  16. enhancer = ImageEnhance.Sharpness(img)9 E+ k6 y- q, Y' x+ R9 [  e

  17. # o% C& v3 @5 M  ]) q
  18. ; }& x9 n4 G' ]. q3 X, }\" b# o

  19. ( [$ c$ o( N) X
  20. # 增强图片
    / K) t6 q. h1 p2 q6 |
  21. ; }9 Y# `' P1 g9 _
  22. img_enhanced = enhancer.enhance(factor)
    ) l) m. j3 F; c; H, Q4 J, v
  23. 2 T9 J/ }# f# D7 h# I  B
  24. 8 S6 u4 a* C* \' f  C+ d. K0 F

  25. 8 ?6 O: t. F. C' [6 C# N
  26. # 保存增强后的图像9 P( F, t9 U) x9 Z/ Z6 M7 y

  27. 5 P+ S$ k; M6 ]\" n* c6 {0 d8 n8 Y
  28. arr = filePath.split('/')
    : T2 E$ A\" X' H1 c  N$ V
  29. ) q0 y! m# L: ]9 t! u, ]
  30. i=0/ L+ t6 n: _/ t+ @/ ?

  31. 2 X. C5 o3 M; n% C$ }3 ?- a
  32. fileDir=''* K% V( D) ?\" L9 q+ Q* u6 @0 R1 n
  33. # l# q) e$ v5 y1 J* I\" n
  34. len = len(arr)\" Y7 @' ]8 C  G! ^0 a# n6 n- k- F) L
  35. ( L0 }9 _/ G. L0 E1 M% i7 o, e\" I
  36. while i < len-1:\" ]: H8 C' a+ d  H

  37. # I, [: \6 g/ }4 V# \, ^
  38.     fileDir += arr[i]+'/'
    $ ]3 T# t& t, ?' W3 s: U) B1 [) Z
  39. % Z6 D4 z& f2 b* N$ i2 m; F% D& N; O
  40.     i += 1/ F) e  e0 P' k2 z1 n

  41. : D* }- a- `0 W& A! x0 ?$ y4 i

  42. ; G# R: |6 W; B. N8 g& w
  43. \" r# m  O; [8 s1 N* Z3 O
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])' R, F$ d+ E* K, Z# z% n1 L8 M; [
  45. : x6 I$ ]$ a; J! N$ Z5 N
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:1 y- v2 d( M6 s

3 X/ l6 K: g0 s% l; V3 U, ]9 p4 `% h增强锐度
  1. from PIL import Image, ImageEnhance
    : l) s\" n8 @; f& t# ]. p* G; N
  2. 6 g1 V1 b) U$ h9 \8 }, U2 C

  3. * z) u2 j7 w0 O1 V& l

  4. * p1 D/ t' G\" t5 ~0 z4 I9 H% V
  5. # 打开图片
    ' Z; J! }; f9 e9 C& M0 ?. V) s
  6. . A0 E  o; M. O6 F/ m
  7. img = Image.open('image.png'). S3 b3 U! b% f7 f6 f& c* y; E. I
  8. $ j. |: x- ?& {' B2 G+ B) l

  9. \" \+ S4 w& n. K\" t0 i
  10. 6 A$ k1 w% d- D
  11. # 增强锐度* i+ Y$ v6 d) o7 S8 Q: c

  12. % Z, J) {# H4 i
  13. sharpness = ImageEnhance.Sharpness(img). v9 J; a\" C; p( L/ F8 J  N& a
  14. 9 Y6 S4 ^' v! a6 y- D4 |# ?2 ^
  15. img = sharpness.enhance(1.5)
    - A8 I3 m: b' }  Y5 m/ k. U; G, M
  16. 7 X( M5 b, C# n/ ]( m4 l

  17. : U, D: D. E# b6 Y
  18. 0 F9 p# g$ L4 c$ c6 f. P
  19. # 显示图片
    0 @- }  s* ?, ]\" ~) ~) x- ^

  20. # K8 `- I8 F5 _$ F4 A( @9 t2 j7 r
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    ! p! r3 N3 t: N4 ~$ B
  2. 7 d8 ~: O* a\" m7 r0 X5 R* h

  3. 9 y2 f1 o! h: G4 w
  4. % W; ?# F$ p: h0 Z, M/ k' D8 x7 R
  5. # 打开图片4 S! m0 Q- C& g8 u
  6. 9 \8 d' G* m( o* P. B. R
  7. img = Image.open('image.png')
    ' v3 k3 @5 J  F0 A, A
  8. % j0 d& `5 |- F

  9. 0 P/ }; o  v- j) N% U' ~
  10. + g; t2 ^  r# u. }3 a
  11. # 增强对比度
    : n% x: g- [7 J$ ?3 v! `4 g& X

  12. & h3 \: b6 ^$ T
  13. contrast = ImageEnhance.Contrast(img): v, I! A0 i0 ?: b7 a
  14. ! e& q1 m/ }# s, w; e; ?& o
  15. img = contrast.enhance(1.5)- h) t) _& O, ~8 A0 h& D/ c
  16. 9 W. i% l0 S* p5 m' I' ?
  17. : r8 S, @& x& W- d9 P

  18. ) K$ K) ?: J( m. j+ T+ ]' p3 Y
  19. # 显示图片4 t1 {1 B9 u4 P/ B( w' U

  20. 4 H' [* i& b, n' W5 M
  21. img.show()
复制代码
. ]0 X& h1 F. n9 |
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, 2025-9-22 16:21 , Processed in 0.808269 second(s), 50 queries .

回顶部