QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    % [) z) D( d7 c5 F/ M5 y6 S
  2. 6 M& L3 q6 Y5 q4 _7 m) f
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png')): ~* u, H2 O* H/ m6 y  P
  4. 1 H+ Q2 j/ Q# l
  5. # 增强图片& \6 q3 ~\" h! ^
  6. 8 [7 I: a9 [. K% V6 g# D
  7. img_enhanced = enhancer.enhance(增强系数float)
    9 U( W1 _! P6 f1 H  B9 V% A  v: j

  8. ) F  P, G  T5 z+ N4 C' t
  9. # 输出目标文件
    7 K\" y4 o' t6 j3 s# w# z! b: F& ]
  10. ; Q$ x  B8 W; e
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
) v* s" K8 H0 ]0 l$ A( c2 z4 P" Z* j0 W; p" z( B) P9 k! [( _- N; M
所需依赖" K/ d" ]$ ]% {# X; i) }) N# |
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    0 p' ]' H& e3 U% I4 @7 A
  2.   U: `\" {' U5 t
  3. # 增强
    + A\" X9 Y+ I5 Q! ~2 B: r

  4. * x( F5 Q+ P2 F2 r
  5. from PIL import Image, ImageEnhance
      |3 v8 |5 }% V. g- Q
  6. 1 c( x+ w* }: g' T+ t: O, v* E
  7. 代码实现; M* d3 b) q6 W0 `& u- r+ R
  8. 4 y. _9 N9 C. E5 B$ x5 s
  9. from tkinter import filedialog; f8 {7 a$ y; `$ ], f

  10. % G\" L- f2 Y6 n6 i& q+ y8 P+ B
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    5 K: \1 ?9 I5 S
  2. & f' R! S/ `, d. K2 v* S1 g! e! j
  3.     file_path = filedialog.askopenfilename()
    . Z( _, O1 F3 s7 `) B# X/ Y

  4. 4 X9 X$ P1 P0 {1 {
  5.     # 在这里添加代码,处理文件路径
    + m) G0 g  T; N+ L+ r/ I. Z2 ~3 W

  6. , c4 r# l# I' z. X! _
  7.     print("选择的文件路径:", file_path). y+ i$ G7 |& P+ S. K9 O

  8. 4 q. g( S# r1 \2 ?! k1 y/ _6 J
  9.     return file_path
复制代码

  1. / h8 \: z: V\" `5 ^/ Q
  2. # 打开原图像
    & z1 T: |0 a# {' m! @) Y

  3. $ f: t  }& E# m$ F1 u2 t$ k
  4. # img = Image.open('image.png')\" T; M* n' k  a) y3 @
  5. , u\" `! o  S  R
  6. filePath = open_file_dialog()0 i& D' \/ l8 \- h, b

  7. 9 y$ P2 ^0 v# W. ]' ^3 K. i
  8. img = Image.open(filePath)
    1 t' F6 I9 ]1 V# P4 V3 g  O* y
  9. % |+ c* L5 w0 h3 @: M
  10. # 设置增强因子2 y0 z/ T! G8 \* D: E2 ?7 m3 T) E

  11. 0 |4 K. z; B+ }/ Q
  12. factor = float(input('请输入增强系数(1.0~99.9):'))5 @. ~4 g; @2 P/ i' {. U

  13. * a: Z$ u0 X* N! F

  14. 4 x$ k2 i- j% @, U0 c4 R\" ]8 L
  15. - i- y) }4 Z  Q) E: x
  16. enhancer = ImageEnhance.Sharpness(img)* w1 F6 k4 r: G/ u7 |

  17. + e- k' I6 V\" D

  18. 5 k# j8 O: s$ |  C! L
  19. 0 q\" k: ]6 Q, e7 e
  20. # 增强图片. v4 d\" T) c. c7 g

  21. ; r. Y6 _+ B$ o  o1 y
  22. img_enhanced = enhancer.enhance(factor)
    ; T7 O\" C' p/ X' F* f1 T8 y
  23. 9 G2 P5 }: n# F' q' z0 w: U8 u# H
  24. ! p: d( j3 J, a) j% u\" g$ X

  25. 4 @; C& ?9 T- [0 C
  26. # 保存增强后的图像
    0 P) u- I5 j; X$ v
  27. : |4 z2 H' E) a9 ?# o\" |
  28. arr = filePath.split('/')
    + g1 j( Z/ i  g5 A
  29. \" c# A, Q2 p/ K! f8 ]# Z( z
  30. i=0
    % p2 W9 a0 `6 N8 _' o/ ~

  31. 8 n* f6 S/ k$ T2 d0 a& \; S1 L
  32. fileDir=''2 H& U! a) K+ l4 v5 O

  33. ; }1 O; v\" X% H7 `& F2 v: ~
  34. len = len(arr)
    9 d8 Y3 z6 i  q6 C' p! K
  35. : P% ?; ~1 c0 U( ?0 x% D; [: i
  36. while i < len-1:
    7 p% A, }* m- C8 |: l; y
  37. 6 T$ y- _) W+ W2 V
  38.     fileDir += arr[i]+'/'
    2 f$ W\" b! l\" P! V7 e

  39. 7 ~7 H7 P9 K( @' j& e
  40.     i += 1) {. T6 Z7 C' F& u7 R- `

  41. & y% k. d2 ^4 E' {- U

  42. # s/ C# ]! _$ y! r% [9 U- P  V\" q

  43. 4 c6 G/ o$ ?5 i2 q( ~
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    ( |$ S% [. D) u* j# J2 ]# N+ T
  45. + T1 X' x4 `* I$ q+ d8 q; K, {
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
' b+ Y4 F- H2 m- I- i0 h
, a2 s) X& @' ~( }) W, m5 C5 P+ W增强锐度
  1. from PIL import Image, ImageEnhance
    / c) n+ M2 O  K) f& {

  2. 8 H3 C6 R' |- [; D$ f% Y2 D\" i5 d
  3. 9 z: ~4 F9 \1 ~7 i4 F7 C

  4. 6 `& j4 ]& V* ~8 S' j\" a
  5. # 打开图片
    : D6 P5 t( h# p  I

  6. 3 V, a$ Q+ M2 o3 d. l7 A- T1 k/ C
  7. img = Image.open('image.png')# k4 R\" N( r/ H4 U\" _0 x: B8 E* f4 b

  8. 4 e6 }& E1 ~, P2 P* u

  9. $ v1 O8 @1 c- W0 Z' y; ~

  10. \" C\" X( Z2 d& I# F& u9 B, v
  11. # 增强锐度
    . B- _1 f9 R8 I2 z  A
  12. 4 R' e, {$ G' D0 t
  13. sharpness = ImageEnhance.Sharpness(img)( {: G+ r- Q& D9 K

  14. . O4 m% H: N* q. }, w
  15. img = sharpness.enhance(1.5)3 W% X5 Q8 A  }; |' Q! l! U9 u2 U
  16. 0 k1 t4 h& y0 j& o
  17. & L% a; V6 Z6 q( `! y7 m
  18. \" W8 i( E- Q$ Q7 F7 I
  19. # 显示图片
      ?  ?# o\" I; `

  20. / l& y! b! ~) V# l* f5 E. q
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    2 t! A: N$ Q' p/ D5 T1 k; q  L+ l

  2. ! i! I9 x* }\" H8 r. `9 y7 `5 J) Q+ q. m

  3. ( `$ M, y2 T: m5 B- t% d0 l

  4. * L0 ], M' V\" U3 V0 S& j1 g1 m$ g
  5. # 打开图片
    ! N; o6 f( v3 N& ~# K) k8 K. U
  6. \" |% b3 S  p+ C1 @
  7. img = Image.open('image.png')
    7 P6 m; k$ |4 T; c* {  c\" y

  8. : l; z1 x, R9 w\" c6 t' U% R0 O

  9. % G9 ]3 q4 U  }  m0 i: M- ^; P
  10. # {5 E4 o: ~: N. M# |& F  t! B
  11. # 增强对比度  N* U3 m/ i9 l+ o
  12. - m; k8 k! I9 b, M. i3 O
  13. contrast = ImageEnhance.Contrast(img)0 H7 c! X& u0 [* z
  14. 0 Z+ r\" U4 q\" [* F8 g( v2 t4 e
  15. img = contrast.enhance(1.5)
    : l5 }6 T\" N% _, n2 _3 H

  16. 8 i1 _2 U9 _. f/ D  ]. Y

  17. ' N# B( `- E7 s* }1 g$ b
  18. 3 Q2 ?/ E1 i) X/ H3 O' l
  19. # 显示图片/ D\" z+ h1 m# P, y# s\" S. l
  20. # ], Z* I\" B6 a
  21. img.show()
复制代码

+ ^1 q; B/ z+ d# @- ^7 p7 `  W
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-2 04:38 , Processed in 0.349892 second(s), 51 queries .

回顶部