QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    9 r* Y  l2 _$ c9 q! }) h; X$ ~' w
  2. 4 F2 V+ ]. K' @5 n( M
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    1 d\" e8 R, p* T9 a( [
  4. ; F' a: M# C/ Q\" J! e1 R' R
  5. # 增强图片
    - m& P/ z3 n0 K) X7 ^\" ~\" B9 [
  6. 7 \7 k3 I; f6 F4 f- c! ]
  7. img_enhanced = enhancer.enhance(增强系数float)( n9 ]( D' d+ x% Z# h/ t

  8. . |( O* h' Y; B
  9. # 输出目标文件( o* k) e% u4 h# U. d+ ^0 {& l/ p
  10. % `& @3 O) ?\" t; s
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
+ @$ X/ e8 v  a) Y0 k& F
' K: z$ |. R7 G: G所需依赖' n9 v/ ~/ c% n) M+ Y; Z
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog0 h% @2 D! p  S9 t+ \
  2. $ r+ d9 h1 g0 f/ K
  3. # 增强2 f9 C; t* Y2 S# `0 T
  4. \" b9 w5 E1 O6 l  O+ k) l
  5. from PIL import Image, ImageEnhance\" s/ M) v5 Q2 p5 a6 e$ n

  6. & ^. K$ o! c4 N2 E
  7. 代码实现\" Y( g7 K4 @7 ]

  8. 7 ]/ x3 Z) H/ m( V$ j- S+ t' M7 h6 h
  9. from tkinter import filedialog
    4 h! X\" V7 T; J% y. z( t$ G

  10. - ^9 t& g, y2 g# h, [2 f7 R
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    4 m2 l2 t\" {  l) ?5 r0 ?

  2. % E$ A, _2 w& @
  3.     file_path = filedialog.askopenfilename()# {7 q7 _9 q6 _5 T: z+ {
  4. 6 b3 ~& }/ q  O. {% ^, I
  5.     # 在这里添加代码,处理文件路径+ V6 l, J\" l( k) s/ {- @
  6. 3 _' @4 b: `3 M7 R3 O8 d5 A\" U
  7.     print("选择的文件路径:", file_path)! v* n; Y# N+ p) o\" ^

  8. 7 c9 t! ^  z  j# P1 r. Q
  9.     return file_path
复制代码
  1. ( G+ B- O5 u0 Q; X
  2. # 打开原图像$ F; ~. Z* P( h# L# Y- K
  3. , s4 B8 Q5 N( [: l
  4. # img = Image.open('image.png')! o' ~9 W3 w8 g1 K2 m, h( p% M0 c
  5. \" B& _& `! L9 M( F
  6. filePath = open_file_dialog()
    : d0 n: c; d5 F' `& {\" J: F

  7. 0 G( J! L! Z0 J+ B
  8. img = Image.open(filePath)
    ! x\" a+ H8 K6 ]
  9. 1 F  C. E- w' Q3 Y9 I6 U' C$ @6 v: L
  10. # 设置增强因子  I: ?% K2 d4 v- `: P: `2 I+ x
  11. : V5 X. q2 M7 m0 a
  12. factor = float(input('请输入增强系数(1.0~99.9):'))9 K' q+ J/ H: O2 w

  13. # J0 E) m. F5 f3 Q0 s, E

  14. ; d% M6 v( e5 Q, G. H0 k; N# Y6 K% b

  15. . y  }! w# H- t) u  n6 F3 b
  16. enhancer = ImageEnhance.Sharpness(img)% s. ~/ W0 K0 D; z& O2 H

  17. % B; K! k! x6 r6 ^, j

  18. 1 n# H- H' k  j: f% ~

  19. * ~5 P$ r( v( E! S) N$ P) q4 K: {+ J
  20. # 增强图片
    2 z! O4 A0 V+ c' Q+ ?

  21. - t5 O* ]2 A- U
  22. img_enhanced = enhancer.enhance(factor)
    . U. J& U0 @: c  \. f) |) o

  23. 8 I# j) o' H: Q8 u
  24. 6 B, ?$ }. A, v

  25. % o( O* a0 y\" Q1 \, r
  26. # 保存增强后的图像5 b\" N9 S3 t! Q$ N\" [
  27. ) r- |1 M; K0 {/ ^) ]; |) O% h
  28. arr = filePath.split('/')
    . u8 |. G% S, f( X
  29. 1 C4 E2 ^2 {( n' E% h
  30. i=0
    8 V- T; j. m$ P3 y: I\" o

  31. 6 p+ c- x! v4 z; y& w7 y
  32. fileDir=''
    3 t1 N1 Q: ]9 c8 q

  33. ' R0 w! g/ s/ F+ R/ @4 Q' i' [
  34. len = len(arr)
    7 ]: a# f* D* H$ H* q

  35. / p2 H1 d) }+ ^9 O( |0 e2 B; f
  36. while i < len-1:+ |+ E# S/ G) E' f, y) O
  37. ' g8 i2 J2 \6 C) H
  38.     fileDir += arr[i]+'/'
    ' h2 E+ d\" E) Z: }

  39. ) r6 {0 i, p; P7 ~: Y1 p/ _
  40.     i += 1
    / a& [# I1 I& c5 J$ Z! C

  41. . O. f8 {% T! x
  42. ) f& O' H/ }\" p- l8 I% }5 ?- Y

  43. 5 E; K\" s9 p; d. h  R2 z3 `
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
      w% G; S8 p8 T) K* l! S

  45. # C; y\" y6 k' k# N3 c
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
: I0 b, `' q4 i; l$ _$ }  J
7 H* K5 k2 S3 g# z/ u增强锐度
  1. from PIL import Image, ImageEnhance
    ) T\" }9 `( B) k0 `3 `\" U

  2. % }6 o8 \+ j7 R% {$ x
  3. ! t' n& j; i2 p
  4. ( k, B! {) S5 g- J
  5. # 打开图片
    ( \( O: f7 \1 ?( `# V! f9 s
  6.   c( F( k) j' z9 R3 ^
  7. img = Image.open('image.png'): `$ ~2 h. M/ b. G6 [4 }
  8. ; [7 x! \) A. c* f! C

  9. $ f6 _/ z3 t$ P4 Q* Y8 u% ?
  10. . F7 L  [- r) ~/ P5 R/ f
  11. # 增强锐度
    1 S7 `( T\" ]- f' i

  12. 1 }9 ~\" d* v- ?6 o1 Z
  13. sharpness = ImageEnhance.Sharpness(img)
    - j! F2 U6 p/ u- l; v

  14. 7 o\" I+ Y) P# p+ ]; I3 A1 x2 H
  15. img = sharpness.enhance(1.5)& i9 U, C6 A8 ?# Y& F

  16. + p( b8 |& ]* m9 A4 Y. o& A
  17.   e$ s' U! U1 V- A  I

  18. ! C\" b\" {3 w2 _
  19. # 显示图片$ v+ ], y6 W& C: j
  20. / h$ ^+ A, U+ ^* E$ v
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance+ h7 x& |- S1 r3 j& F/ u- }/ X: J* {
  2. 2 U8 ^2 Y  I- B7 B

  3. 8 E7 f, s% Y. M  Q9 |/ S  f; f

  4. ; @8 Q: }6 |! D% N/ K6 V
  5. # 打开图片
    7 `4 m8 B& b( K' R* |

  6. # V9 h9 E' ^% k- r
  7. img = Image.open('image.png')
    $ w0 h% Y/ e& h! f% W) j/ P
  8. - q5 z5 d# U8 ?: l

  9. 0 e% c6 W$ J% `6 p% h7 w4 C

  10. : R9 b% C9 e  J& o5 X/ L
  11. # 增强对比度, z* s$ @/ V, L! t
  12. 8 y0 ?+ i7 R9 c\" `5 [
  13. contrast = ImageEnhance.Contrast(img)
    ! k- ]( d, V1 A% s3 P+ }* E

  14. ! a0 }) r$ l+ [0 ]. L6 q. j
  15. img = contrast.enhance(1.5)9 d. Y5 G; v1 Z# \! a  c
  16. , h+ F+ Q. ?\" R* ]\" @2 U
  17. & m# {  h7 o/ m0 h
  18. 0 m9 {# K+ k+ C7 |3 \
  19. # 显示图片
    # ^  \2 j$ c4 G
  20. 1 A. r! {( P* W: p\" E+ A
  21. img.show()
复制代码
! S" e0 w- b' v
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-7-10 08:02 , Processed in 0.299246 second(s), 51 queries .

回顶部