QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2977

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件% a; ~% }$ V& i1 w: n! w$ ?5 Y

  2. 5 u- {$ M; v& q( O- P1 c
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))7 _2 Q\" \( D( D
  4. # n' s3 D! ^0 m; k5 f3 I0 P: @
  5. # 增强图片7 ~3 s- P% x; Q4 p\" x# x* @/ q
  6. % I5 L5 M9 J/ ~6 y* z+ e
  7. img_enhanced = enhancer.enhance(增强系数float)# H+ b8 s; |& w+ z  c\" H
  8. ' w, X6 R7 Z$ ?! p
  9. # 输出目标文件7 U) B* }& w; G\" Y: H2 C+ Q3 L

  10. 8 G  Z( C' o- ^% v
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致7 G3 b6 ]3 j9 G$ q7 C+ g  o4 |3 A

% O9 `7 u+ j% x$ j1 Q; q8 T所需依赖% x# d( q, B7 n8 |& L
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    + h  D9 y; U( B1 [2 @7 E) a
  2. & d8 S, C4 S; l/ f
  3. # 增强8 w5 g. s! J\" s

  4. . L0 x! E4 Q0 B# @
  5. from PIL import Image, ImageEnhance
    : q4 b) g; ~\" }/ p

  6. - f. O2 u& c6 K
  7. 代码实现/ x+ x/ u: B5 L% H8 [, t& |
  8. . ?4 h% s\" q; P1 O- c7 L\" k! c( U8 i
  9. from tkinter import filedialog
    8 Z8 F# @) S* W# a

  10. : p$ ?+ i$ y) @& }9 W
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    0 }+ o3 I4 ]$ \5 b4 I$ Y

  2. 8 `1 Q4 }  t/ y/ }7 |; a5 ]
  3.     file_path = filedialog.askopenfilename()
    3 f( f& u1 Q  `) G\" p9 `  P- l

  4. % g: ?: u9 j, `5 O8 J6 K
  5.     # 在这里添加代码,处理文件路径
      ]0 X, @0 P0 a  ?& G. O

  6. ( n. T5 a3 n8 `& V
  7.     print("选择的文件路径:", file_path)
    4 r7 m4 J9 N5 \4 t  T8 R8 P

  8. 8 [2 P! V* W) }3 J; B$ M9 o. i3 G
  9.     return file_path
复制代码

  1. 7 E+ S1 c' m$ ]* U
  2. # 打开原图像# _( F( F/ q+ @+ N1 Z% z  l
  3. 0 D' n: w' ?. l: c$ y( F- t) V
  4. # img = Image.open('image.png')+ V0 S\" |2 D. _! A' }. u
  5. & ?+ k1 U. F% P) t- l- h
  6. filePath = open_file_dialog()
    - s$ R% v% [7 q! S\" `2 k: e
  7. 3 R% r( |9 d7 f& B  s9 w1 F: B4 g
  8. img = Image.open(filePath): O/ I2 `3 g  L( \/ e: j* O
  9. ( T, G4 V+ q& H1 B5 C& v9 P& U
  10. # 设置增强因子
    # w\" K+ r4 X& B' y- \0 _7 s
  11. 7 H\" `$ |: a' r: v\" t& \' l
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    . l0 c7 r1 }4 h! K/ ~+ K+ C0 g

  13. % H- Q\" ?0 N: a6 |7 j1 L
  14. ) @1 L- T\" _- M! c# ~& r/ G
  15. * s* w, W4 X5 Q8 f8 C& C+ H
  16. enhancer = ImageEnhance.Sharpness(img)
    0 O5 h( Q, i2 s7 `4 y8 G7 ?
  17. / x7 }8 s$ n! e' x3 a8 @
  18. * U* }! \4 ^\" V4 Y8 [
  19. 5 u8 |$ e/ \: Z+ \
  20. # 增强图片+ ~( r\" c4 Y/ B, t
  21. # p9 o$ E7 L! j) X
  22. img_enhanced = enhancer.enhance(factor)! `3 P: C) ]8 G% f5 O! D
  23. 3 [. g4 M: u3 `- c: [

  24. - u8 n6 N3 _; C$ j
  25. ; o0 s# h; R7 D0 G4 J
  26. # 保存增强后的图像
    ' V: ^$ }( ]- L8 u
  27. 6 G- [$ }8 ^1 S& ?2 D
  28. arr = filePath.split('/')
    % q: j6 G$ y! t: i

  29. % K& \# G( Q) h- g) b7 @7 n
  30. i=0
    / Z5 L) V4 \. L% H# M& g. m

  31. , |* `2 G% p; L0 {& n& F) L
  32. fileDir=''
    ' r7 v/ \2 T9 C: h\" v4 ~7 J

  33. ! l* s( {) w, x. U) F+ j
  34. len = len(arr)$ ~6 H8 ]& G8 E

  35. , Q0 ~9 k8 V0 ^# A. o
  36. while i < len-1:
    6 M% M) `( e' p6 d: v, |* p
  37. 9 w6 b5 m5 X- G
  38.     fileDir += arr[i]+'/'
    & s. e1 i  v) `) H9 ]
  39. 6 h* \7 m\" A. f- y$ ^! m2 Y! ^# z: B
  40.     i += 14 e: b2 w% U' @- W! y) d
  41. , ~7 H7 m1 E- C

  42. ' @0 M; }4 B8 a
  43. 6 j) N$ x/ a4 _- W6 A7 k1 e$ O
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])# [3 C\" u  p. I! H\" L

  45. ( f7 a2 B- Z  X0 j
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:" D1 B2 E; {% F3 t( Y& F

/ Z( M/ {$ U' K7 H8 x/ s, L' f增强锐度
  1. from PIL import Image, ImageEnhance! `( ~# u# u: \5 e8 ^& c- y
  2. / _; z% r- @8 _8 `* |9 B- ]# d

  3.   n6 k+ j0 C. l; ?$ T6 Q& u  |
  4. 8 d2 y/ ~\" i7 T& I7 i6 ]9 i4 c) C7 ^
  5. # 打开图片
    + L; K2 S. r- j+ A
  6. ) V: J. U5 a# O$ K: z7 A
  7. img = Image.open('image.png')
      a# z& g  y) ^/ D0 p
  8. ; j! r& c/ m' q# e
  9. 0 g, a# `1 p$ p9 f* w2 ]7 N. Z

  10. ! F$ p  N. }& t7 K& c
  11. # 增强锐度* w2 p: j2 U; @4 n% `/ Q- m! M

  12. 7 F# b% M9 n0 J4 [' e) L8 n0 O7 R
  13. sharpness = ImageEnhance.Sharpness(img)
    : R' d/ o: ?, {* l& m$ y
  14. 3 g7 {( C8 a4 e' }, k7 ?: `
  15. img = sharpness.enhance(1.5)0 o6 Y0 X* I, N6 x

  16. 0 N4 y5 F; }- L# q# d, o
  17. % Z% M/ v0 @2 O/ e+ V4 i

  18. ! X( J( N* A/ d) v5 a
  19. # 显示图片
    ) n; y% B3 z+ K' O# v% g\" O
  20. $ t6 Z' E7 O/ @
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance0 u5 l4 W) u+ E1 Q
  2. 7 A\" N) S- y/ ^' H4 _2 g\" E0 J: n/ G

  3. $ M. w% ^! U6 [6 \9 C+ ~& y

  4. ; X# o( z$ V' T- d) B) E! t
  5. # 打开图片! \; Q/ q& h9 |$ S# m1 m
  6. + B/ h9 O0 y! u7 ~5 D
  7. img = Image.open('image.png')4 F0 _) C( E* }0 \1 G
  8. + X% g( I1 S9 f/ J! Z2 z0 Q

  9. 0 p5 k0 i$ N! _, a' j\" |- I

  10. 5 O8 L3 G. j$ y/ }0 ~* E9 ?
  11. # 增强对比度% ]' ?  N! K\" E8 q. _* X/ q6 a

  12. ' W, N0 D1 g6 r. g: s& }
  13. contrast = ImageEnhance.Contrast(img)
    , M* ]& c$ @1 X5 g! E
  14. ( v, r% M' _) p3 ~! I. |7 J; `2 A
  15. img = contrast.enhance(1.5)( E8 Y* s2 A  u1 N' G
  16. / t/ s+ ?2 d( a; `\" W

  17. : `* ^/ M3 }7 H; ]$ c\" D

  18. 4 D1 p& P, ]+ M\" }) j# f4 u: I/ p
  19. # 显示图片
    ' F; s1 s1 \+ z# d9 F/ m

  20. - C9 N! L; V8 N% E# |) ~
  21. img.show()
复制代码

+ Z# }9 r* ^2 ?
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-24 15:16 , Processed in 0.413114 second(s), 50 queries .

回顶部