QQ登录

只需要一步,快速开始

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

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

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件* o4 k9 u2 |9 @3 E& X

  2. & M7 Z: i2 c( ^4 y
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))% l9 B. a9 f8 T
  4. ; f( T2 B5 ]( O. M0 B* u
  5. # 增强图片7 ?  r! v( J# p2 [; g
  6. # C( u* s( f0 Y+ o\" p. g1 Q
  7. img_enhanced = enhancer.enhance(增强系数float)  n0 U5 y# r5 f( ]1 R

  8. \" F( N' l& J+ P' |& B
  9. # 输出目标文件: t; r; Z\" ?4 \. G

  10. 9 H) l% X$ h# r- Q. }# `# R+ f
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
# v1 w" K2 @+ n7 D& m7 N: O& ?" B) f5 m9 q+ O9 x
所需依赖
' P) F  B  {; m# b& X' u2 M3 H; V# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog6 b2 W$ }7 I  Q5 T& |( f\" y7 l

  2. % c0 o$ K+ ~0 I$ N, f/ v
  3. # 增强
    9 ?9 r' i: `  G. P9 Z0 g
  4. & T, B\" p( Q6 ~* ~0 \% y7 k) r
  5. from PIL import Image, ImageEnhance\" d; q$ U\" E; k- e5 r& _! u\" W
  6. , D5 e7 b) L. k0 N* p( v4 I
  7. 代码实现* [8 u+ L+ e! O2 n( O- V8 N
  8. : U# c3 s! `6 V( w
  9. from tkinter import filedialog
    ( S6 f3 _1 f- i, k
  10. ! I1 h* ~! ]/ z/ e* }$ P# _% C
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    \" ~5 p/ q; X# Z- m$ Z8 a1 l; ]
  2. $ P4 A( }) V5 Z
  3.     file_path = filedialog.askopenfilename()
    9 `/ ?; I& L: T7 v! i0 b
  4. : B) ]: h; |: _9 a, H6 I
  5.     # 在这里添加代码,处理文件路径
    8 T& h3 `; x; m- O# \\" h& N
  6. 8 s) C4 y+ Y( n$ b0 d& i6 r2 l9 b* m
  7.     print("选择的文件路径:", file_path)
    2 j- g0 a/ Z: k1 I  E5 `: |
  8. ( {: s) h1 j$ u& U0 f  S
  9.     return file_path
复制代码

  1. % {3 j3 T' T\" m# Y
  2. # 打开原图像
    * l, p1 ?9 H\" |1 P6 r

  3. . p* a7 p( _. y( w+ m$ S' W. r6 T4 k2 C
  4. # img = Image.open('image.png')4 E' V9 l% A3 k, l% D+ }
  5. ! u* \, B8 z. @& x7 H% L
  6. filePath = open_file_dialog()$ d6 ~1 @2 D\" h+ p; N

  7. 9 L7 K& ?7 r* j( {
  8. img = Image.open(filePath)- f# h; r1 u; p0 g5 w

  9. . ?  `# C( O! j% I: t. {
  10. # 设置增强因子
    # ^1 |, R7 B( X0 C\" [- @( B6 g/ d

  11. ( Q5 f( p0 m$ D$ k5 p6 h* B
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    0 m3 s; t6 _7 L$ L  m7 Z- C

  13. 3 S. ^2 {. C% r( R3 }/ U5 Q' M
  14. * k. S( y! B7 \0 H, J4 f; m4 \2 n
  15. ; L; K+ Z$ E  U- f: R: y
  16. enhancer = ImageEnhance.Sharpness(img)- R- d/ k$ y* ~0 G, u\" t

  17. # r+ E; |7 M\" ?6 L
  18. ) T3 y1 h! D) R

  19. 0 Y\" u7 ]8 T4 e  A3 F6 ^
  20. # 增强图片
    \" z2 r0 g& L( N
  21. / Y) c6 f1 }& T; t; @1 j' o+ k( c8 x
  22. img_enhanced = enhancer.enhance(factor)
    % Z5 A/ h: Q8 C8 V: n- {

  23. / V# c0 @. X7 C

  24. 0 }! B+ t! M, K- M; B! Y

  25. + z# ^# v6 v9 ~- g\" _
  26. # 保存增强后的图像
    0 z# a5 k, m2 a

  27. * b& Q  q* |( v& ^! ]6 b! E. b
  28. arr = filePath.split('/')
    7 K# N5 w, W: S# \  u+ V
  29. * T7 ?1 p! L1 c7 Z- }5 S\" Y3 z\" U
  30. i=0
    0 R7 w4 L  o9 O0 p- W1 `& O
  31. , |\" D- f9 F: {# L& Z, S+ w8 S7 f
  32. fileDir=''* p# l* |8 X+ x+ B$ f5 y' s
  33. ) ~/ ~( f/ n0 g' T6 n
  34. len = len(arr)* m. j& Z4 N! X0 [

  35. \" N8 |5 O3 Q$ N\" {
  36. while i < len-1:9 Q\" e% i5 ^3 F8 ~# a: d  G

  37. ; z0 d) Y3 V& b: x4 q/ k/ Y
  38.     fileDir += arr[i]+'/'. B! x$ g0 l% O- }! }

  39. 1 Y% S( l) L. I8 N/ K4 h0 D
  40.     i += 1
    5 f- r\" A* ^% V
  41. - T9 T0 t9 n; y/ N- y3 P) z0 N- G
  42. ; P/ q- |; U8 P0 X( h

  43. : b. |4 o! F2 T: [$ s) t
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])1 \9 S3 n; p: m1 t* C+ T

  45. + G\" K; s! |0 M\" R2 s& S. L
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:, h7 y6 u* E# i1 x; l
- l( r* d$ A: L0 h6 l: E2 Y' j8 d
增强锐度
  1. from PIL import Image, ImageEnhance
    7 v3 j6 _3 ^( x  e, _7 }- `# J5 ~0 p' X
  2. # r8 G\" q2 d, w\" N

  3. + d& v9 ^' [6 f& [' a& s; m+ f
  4. ' n) Q5 `\" R% A\" T
  5. # 打开图片5 z- A( p8 f/ ^+ F; A+ y; E; s/ }$ x

  6. * F2 q* R& o, F! J; s, L) G
  7. img = Image.open('image.png')1 `! z; _& ]. z7 F- b4 i' Q. X

  8. / z2 X2 H, T% s/ ]# t4 [

  9. 4 z: G/ H\" {' O3 b
  10. \" m6 B5 W- k1 \$ D# \
  11. # 增强锐度% ]! Z- h1 P6 {+ {# N+ n, [. D\" q' l

  12. % p. I\" k/ q3 t* P' o5 b8 P
  13. sharpness = ImageEnhance.Sharpness(img)
    - P0 {. @% M$ y  g# T

  14. - v1 _& {\" T6 n2 M+ H
  15. img = sharpness.enhance(1.5)
    + a\" `+ I\" S8 r
  16. 5 H1 \+ s* n; P, Q; S6 D2 Y5 L
  17. : f) k' Y  T$ l; Q7 ^

  18. 6 P2 i  f7 W$ W& ?0 D
  19. # 显示图片
      b+ n$ U3 {& e/ H' o3 s6 z

  20. , G/ y1 C# G3 l5 t) `. }- {
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    1 y1 W6 N& N3 T( w2 I

  2. ( S4 v+ H/ Y+ `
  3. 3 T0 J3 L$ k$ p$ y( M
  4. , p+ u' \4 m: O/ V
  5. # 打开图片$ A4 e6 Q1 i+ L& G

  6. ; u8 D* d; ~9 k
  7. img = Image.open('image.png')
    6 Y: w% p/ k2 W9 M

  8. 1 M  U# S0 z* ^- i( U
  9. ! ^# b2 v, c% _# U* U4 `& t

  10. ' b8 s7 O9 o8 q  B6 C9 d3 J% w2 X
  11. # 增强对比度& o* X9 y* _7 H

  12. 3 _6 }- \3 v/ \: t
  13. contrast = ImageEnhance.Contrast(img): e. n5 d- F\" s3 h
  14. 3 q; G: j# m\" _# _2 q2 x+ A
  15. img = contrast.enhance(1.5); {1 f  r$ ]3 B6 \5 z: q9 ~
  16. - @6 K2 s% Z% u5 ?

  17. : R# t. k. m+ [- M  t5 {  k. q
  18. 5 V  ?# P, n/ w
  19. # 显示图片
    + |4 t\" f( O\" I- l, f  n

  20. 9 T9 Y8 Q. L# J6 u  @( @
  21. img.show()
复制代码

" g& C: |0 K: R
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 18:52 , Processed in 0.422792 second(s), 51 queries .

回顶部