QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2976

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |正序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件8 k' i/ ]% a+ }& h  `
  2. ( l9 W' V* Y) x4 w1 }
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))3 g0 Y2 Q; R\" I, {0 P

  4. 0 s: {- @\" T% ?* d5 L3 t
  5. # 增强图片
    % t+ {# S3 B) X0 i- P1 `
  6. 0 C7 ~, h; v, m+ c  `( S
  7. img_enhanced = enhancer.enhance(增强系数float)
    - Z( E* `& L- Z- w( ~

  8. + w9 Z/ f: D( T2 _
  9. # 输出目标文件6 O3 h/ t2 `, T, {  ~) N

  10. 4 v! p; c$ J: X& _9 t2 N) |# q
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
8 W8 c, n5 C' s
8 J, q. W) ?8 v$ |" j所需依赖; {5 ~9 B3 w" k/ o! l' ^+ N
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    ( t# ]\" n! ~% m; G: r

  2. $ o  y9 }8 j0 |) @9 f9 L
  3. # 增强
    5 ]1 }3 F7 x/ Z\" h' P
  4. & N. l6 A' y1 E9 h7 m: C7 y2 _0 O
  5. from PIL import Image, ImageEnhance
    % [* }# z& T: a! j+ X1 q- ?( F

  6. ! o' c8 a% P. N) `
  7. 代码实现
    5 k* b& l- T7 x# r

  8. & P2 @% Z; Z\" H: w0 e. {- Q
  9. from tkinter import filedialog+ d- e0 k' p! x9 L. W
  10. % j3 Q% r! c4 }! g8 H) V+ c+ I
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():$ W) s2 t8 U5 Y9 `. Z/ D\" g; f8 A2 z

  2. ; Z7 K* F2 P; z1 N) G/ p$ I5 N' A
  3.     file_path = filedialog.askopenfilename()
    % ]\" e1 O3 }9 V4 {
  4. + e; S* O% \6 B4 n7 |$ B7 i0 r$ s
  5.     # 在这里添加代码,处理文件路径
    % n9 F6 P- {( i* |; s3 W( T6 z5 f
  6. \" k& i# w0 c- @. O6 f* e
  7.     print("选择的文件路径:", file_path)\" X! e- i9 j7 {9 L
  8. 1 S- O) B1 [! q+ X7 Z% k& Q
  9.     return file_path
复制代码

  1. . p- O* w( y3 O+ J
  2. # 打开原图像
    1 J5 t) ]( H: l. v/ q% t

  3. 0 z+ R9 r7 T8 _. P* ]2 v
  4. # img = Image.open('image.png')
    6 R' W9 a7 d) [: i# ~& f
  5. ) b$ F( \, Z4 O2 G: X
  6. filePath = open_file_dialog()
    4 w8 c, j# r- m& B3 G
  7. 8 q, g3 Y- x8 N
  8. img = Image.open(filePath)
    % W! P6 S$ b- C0 J3 h8 l' `\" _* Y
  9. ( X\" ~' |2 t- n) `# X7 W& U1 x\" p
  10. # 设置增强因子# ]4 \! K: M; u+ B2 i: `* I
  11. 6 U4 }8 I0 Y* W  |
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    5 S( X7 `# k5 I# }# s1 C0 R
  13. 4 i3 S* N* t& Q+ a- }9 |7 p

  14. 4 A0 J+ n- E: y# W6 W3 i

  15. : q1 p\" R/ n# _$ u; Y, w
  16. enhancer = ImageEnhance.Sharpness(img)
    ; ]+ A) o. T8 C' }
  17. , g  X& p7 V/ z9 H6 x+ t

  18. \" A4 S; ^5 \1 B

  19. \" l# R3 n$ r  [4 f
  20. # 增强图片5 w1 |) u+ R  W- p\" S  |\" x

  21. , e& H: ~$ l6 @2 L; y0 q) \8 r
  22. img_enhanced = enhancer.enhance(factor)( H5 v* n5 [6 h9 t* |

  23.   K: W0 D0 b' {- [
  24. ' w! W/ U9 I4 a. I1 R, C4 f

  25. # y6 B& C' \/ S  \2 D: o/ U
  26. # 保存增强后的图像
    0 y; Z7 @, {- I4 T2 |
  27. $ G2 Z3 m2 o, r' s
  28. arr = filePath.split('/')
    . J& q, o; G. z/ I  D0 i
  29. . n1 I  E$ w# ], a5 X
  30. i=0
    6 b\" T9 m- |% T2 b6 N) r- C: I
  31. . Y% a- x9 b# e% a8 {* E2 T: y) R
  32. fileDir=''
    , r# K' r, f  S6 [0 M0 b1 {! D\" H5 y* P
  33. * F% T# D% t* B2 B+ T  O
  34. len = len(arr)
      p& C$ r' u0 U

  35. : \/ }, V- i3 }0 a5 y. E$ @( y( S) E' {
  36. while i < len-1:
    # M# c3 t# D0 ^/ u; P, Y# _
  37. $ F4 O8 N+ V* L$ @\" |/ l
  38.     fileDir += arr[i]+'/': T( l0 d* _$ J; z
  39. 9 v5 s$ H! Y: f. X: e8 }/ k+ [6 q, v
  40.     i += 1
    ; z\" M8 L7 ~$ S: [

  41. 0 e' w  g$ p5 A& L\" g  }

  42. . M! G4 [- }- n
  43. * o/ t  t' Y. _5 J- U$ U
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])  \8 f4 l9 q/ H8 E

  45. $ G3 B9 }6 j9 o: e! B7 y% i
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
: E6 H/ F! r7 I+ ~, p5 l; X8 t% o  V7 g( n
增强锐度
  1. from PIL import Image, ImageEnhance1 V% l\" @/ d, U  h: w

  2. 7 H5 P1 [8 Z8 |\" a# D

  3. + \3 N3 M+ Q# e+ D& o0 f+ m
  4. 0 y. O) \$ H0 {, L5 G
  5. # 打开图片
    ( ]3 X* E& T1 w% x

  6. 3 d& ?2 A1 F' L4 v3 k! B3 B/ `
  7. img = Image.open('image.png')
    7 a8 G3 D. R: P: x9 P: q
  8. 1 t+ G+ H\" h0 B  k
  9. # S; N- i& [% {+ p8 U/ b5 h\" P

  10. ! ?0 a' C% R5 n, J
  11. # 增强锐度. A* v6 N/ |( M
  12. . g2 S& o6 j, F\" M\" B+ j! w) }
  13. sharpness = ImageEnhance.Sharpness(img)1 k  G% o0 M: [8 i) J2 `/ i
  14. 3 z# B' C2 e  ^4 a
  15. img = sharpness.enhance(1.5)
    8 d( ]! D) P! M3 _1 @3 S% C, J
  16. 2 P8 M0 Z  s\" ^5 a# J& e7 ]& x3 o* d* N

  17. 0 s3 o5 n1 M# z. D
  18. / a$ f* v; y) z4 u% K
  19. # 显示图片: q1 I. n\" j( X7 Q  A
  20. ! x1 s7 ]' r1 I7 S
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    \" B, D# F& N# ]+ d9 g) ?! n

  2. - {- ]% X1 W4 h) X. j

  3. 8 K4 v4 C1 s4 n2 ?) o
  4. 0 L/ R' A2 I& e7 i
  5. # 打开图片7 x( i- g2 c2 \- ^. l
  6. 6 I3 K* S8 P5 Y
  7. img = Image.open('image.png')/ T, r$ w0 R5 D, v
  8. 6 {, l# w: A1 B4 z+ _

  9. 2 F- Y* l7 R4 t! L9 k4 P7 Y
  10. ' E1 U: Y9 Z0 R  o8 p
  11. # 增强对比度
    ! t( |8 g, {, \
  12. ' V! [\" a4 W\" e! T  J5 u, x
  13. contrast = ImageEnhance.Contrast(img)7 C- `( @3 N' O# q\" [( K1 a\" f
  14. ; w0 f$ q# o- @
  15. img = contrast.enhance(1.5)1 X1 z, ~\" e( i6 ~4 e
  16. : a; ]\" T* l. T* j1 x& G+ u
  17. : J  f3 ?+ t( m7 s( u
  18. $ k, w1 j8 s) N
  19. # 显示图片
    ! N! q9 N/ T$ k6 p5 e\" ?0 L+ G& P' ~
  20. 4 h  O9 I# l% V4 _7 X\" @
  21. img.show()
复制代码

1 A2 H! ~. ?, e. u7 {2 O- {1 d
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-9-12 16:17 , Processed in 0.323465 second(s), 51 queries .

回顶部