QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    - S3 B. J' M1 h$ h8 N

  2. % \  S\" y: r5 a' J+ w# |! N2 M3 F
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    ( R5 S! r: ~% o: h& z

  4. 9 y7 R& s9 |+ p
  5. # 增强图片
    ! ^& q: y( @% I% u

  6. ! |- G: e. J5 d6 [$ S: w7 [\" l
  7. img_enhanced = enhancer.enhance(增强系数float)1 L2 w* b! X4 w' M
  8. : k% V: m6 [: r# K* _( z+ P
  9. # 输出目标文件) ^0 @2 ]4 L4 m# `6 D

  10. 5 P, I\" c7 o) r4 A
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致& }0 O% N; V# H5 M
1 \/ t1 o) E! l- q- u
所需依赖
: j. q& W7 Q& f3 X3 N! ~% y# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog( ^2 j  S# r2 o6 m
  2. ) E\" O  F5 ^% N/ d) C5 G
  3. # 增强
    2 ?$ Y; t% t) r# _

  4. 7 p4 |0 A( w9 z' a7 E\" O
  5. from PIL import Image, ImageEnhance
    ) I1 N5 m7 M0 ]. M
  6. # f! h+ q: H$ ]: B3 Y6 f  ]+ q1 E
  7. 代码实现! E9 p& G# n3 e$ D/ l. e! L
  8. 5 e6 x; \, k7 l' _* l' Y% n
  9. from tkinter import filedialog
    % }0 ?+ P6 |5 n0 W
  10. ' O1 \\" ?3 o- P. P  s7 |4 ?
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    \" Q+ y+ S3 @1 H' j3 f5 y9 B4 H

  2.   t. Z' F; P8 @: D& }$ `5 f7 ?' j1 e
  3.     file_path = filedialog.askopenfilename(); {, H0 F, e/ _1 m6 s: r2 w7 |3 n

  4. 3 R- F2 m/ X/ G; F7 }4 I* D
  5.     # 在这里添加代码,处理文件路径  _( s! m  a& }6 T$ ?2 ?# v! l
  6. 3 G+ Y/ \3 z8 w9 k+ @6 V3 v
  7.     print("选择的文件路径:", file_path)
    5 \8 r; c+ g1 e* K% D
  8. & y& \, U) t  t: B( ^  M
  9.     return file_path
复制代码

  1. 5 f- H$ _# Q# q4 ]
  2. # 打开原图像
    ! \7 e, j& A\" h7 R/ j

  3. $ R; T! _% f1 \! J5 I; \4 {3 ]
  4. # img = Image.open('image.png')- @' w& k9 v1 b0 t$ [$ i) J
  5. ) k* ]6 z4 n, p7 {3 R+ }+ G1 B0 n\" }
  6. filePath = open_file_dialog()
    % B3 o  Z& ]% s! a

  7. : [( l- d$ m' d6 G% L
  8. img = Image.open(filePath)
    \" H  {) i  r- ^7 l% ~
  9. % L2 P  H( \8 k6 q) `
  10. # 设置增强因子
    5 N  K# J! G2 P0 T$ B$ S7 ?' y

  11. , L3 u& i4 X$ y5 s
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    1 O6 z7 E4 A+ |) ?$ X! e9 D

  13. % s( C+ `) L* f' N2 A
  14. * q1 z8 F9 k' @: V

  15. 7 d' B2 t' r- W7 ]
  16. enhancer = ImageEnhance.Sharpness(img)
    $ h9 a5 V. i5 E0 V& _

  17. ! a/ r; C1 r2 j
  18. . @3 Q2 O  ^- @
  19. $ \* M( [8 l! U9 U; R
  20. # 增强图片
    # @# y) I  t9 u5 d2 \1 C  C/ s
  21. 8 T! s$ b5 V8 C1 X
  22. img_enhanced = enhancer.enhance(factor)1 ~\" f$ ?: \$ l7 c7 M\" c7 V' c) P

  23.   A) V. i7 F  O0 ?' d9 U- G

  24. ( [: B5 l! }# Z$ a( D( n3 o

  25. / @1 T) |2 y6 l0 D
  26. # 保存增强后的图像/ a9 o) @4 ?9 ?
  27. % ]4 ]7 a0 \. a
  28. arr = filePath.split('/')  {( M$ {5 N2 C$ {; ?
  29. 8 s$ i' S, k# E! h& G& }1 t- t
  30. i=0
    ' K  `2 J  W5 i7 o1 ^5 k

  31. 6 @2 {3 {2 v+ C7 j- V; K3 ^+ j1 N
  32. fileDir=''$ m/ V7 U+ t\" S( @) }' }
  33. ! B/ |& w: M; b! B3 ^
  34. len = len(arr)3 ]  t5 l3 q: N/ `4 T
  35. ; p( v  x- S; z6 X$ Y* X6 ]9 |- k
  36. while i < len-1:
    1 k$ E( _1 v\" o9 L  w) q

  37. * |, \9 F7 c; f/ J6 a
  38.     fileDir += arr[i]+'/'* X7 v3 L1 f% b+ r

  39. 4 k! J/ E9 C5 i- O+ b2 b
  40.     i += 1' T$ ]$ e0 Y1 i$ E6 [# O
  41. 7 B2 v8 d, Y9 W4 Q% x' }

  42. 8 Q& B6 N; U5 a. V5 ~( U1 v7 d
  43.   Z; |) w& l. @+ m
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])+ i/ W. \3 G  D& G' Y# L

  45. 8 V( a% }4 t4 o
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
! g) G2 D8 i7 y8 a" C4 a  A* }: `9 z8 A
增强锐度
  1. from PIL import Image, ImageEnhance3 \1 g) Z& y\" T- `

  2. ( Z* j  A! E' X. W. T4 t8 F' c5 w

  3. ; N7 P8 U: T\" Q- k& H0 l
  4.   U/ w\" Q; G( H  N; m; s9 |\" d. v
  5. # 打开图片( @9 K* G8 R\" P\" j) z

  6. 9 U% g. X* @( D
  7. img = Image.open('image.png')
    ' ^  M* \5 Q- B
  8. 5 e8 \8 R- {. Y  ], K$ Z+ V: u
  9. 5 ~: K6 M9 r1 U3 J) F: V4 F
  10.   f/ m4 n4 q1 A
  11. # 增强锐度
    ; h; x0 _, c' i3 S\" b5 s5 w3 j

  12. \" r2 Y. f3 y/ V* K3 |- n
  13. sharpness = ImageEnhance.Sharpness(img)3 q& u% E6 [- Z- h( A
  14. 2 [5 G9 h' U9 P2 [# |0 R+ t) a! ]
  15. img = sharpness.enhance(1.5)
    9 ]. u) X) e2 ~* g\" u# O- z
  16. + R/ Y, W; Y# g9 L0 G* U3 T* g
  17. + n: _0 e\" ^' m\" k. U' W6 j/ d
  18. 3 k0 E9 ^! ~( W* `* B2 u, N
  19. # 显示图片
    : H& _: v+ J\" G7 K! y
  20. 5 B1 }: B4 |6 C* V0 j
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    6 s) G- c0 c\" {: M& k% R

  2. ; m1 O0 Z! q$ B

  3. , x- N! Z, \9 o
  4. 7 @! g' {9 @/ L: ~6 T+ t2 o5 p! a. N
  5. # 打开图片
    6 }9 E9 d1 f% N
  6. 5 L# T. u1 q+ E- {, o4 j, _
  7. img = Image.open('image.png')
    8 V2 R7 _7 I' H- i

  8. 5 u/ B0 N+ k* z& A

  9. / ?: r- ], s5 w

  10. - ^# H! Y6 U) \  B/ j6 Q0 \; X
  11. # 增强对比度
    3 l; I) K. l7 x4 V( K4 t% @
  12. * h$ \4 D! h8 X/ ~
  13. contrast = ImageEnhance.Contrast(img)0 L, W. C* O. t

  14. 3 V; Q* |7 x6 f; K1 p6 M
  15. img = contrast.enhance(1.5)
    / O6 K$ z$ [+ S5 I9 @

  16. 7 }/ t. y# e0 c/ Q! q7 h4 D$ j
  17. ' D3 T4 i+ C- ]# k( R- k

  18. 5 Z# l5 T. a\" m& v# j: j5 r
  19. # 显示图片7 E9 N\" X: T3 l6 I7 o

  20. ( I6 T  u3 ~* E! Q9 h
  21. img.show()
复制代码
% K& \& C5 Q8 K" m6 f. {" C
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-4-10 17:27 , Processed in 0.389116 second(s), 51 queries .

回顶部