QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    - c: S1 f1 u\" _* q
  2. 6 v# p6 O\" M\" O- u% r1 o
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))+ \8 K. j# X8 E
  4. 6 }5 ?& r) T: e; [- J+ ~% K: c% i
  5. # 增强图片3 c! i2 U  w- l  l! I
  6. - w( [1 b  k1 \- Y% r7 q& \& ^8 o
  7. img_enhanced = enhancer.enhance(增强系数float)
    / S# N: x4 I$ Z5 H9 t
  8. # X# a# D! V( c* p3 E7 \5 W
  9. # 输出目标文件' U. y! `! W. `$ K0 R3 ^8 ]

  10. + T& I& z6 y1 d
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
$ ?2 G  J8 A: d9 `3 C% m' O
. \4 K8 c" P, L7 e+ r, O所需依赖
" q% M/ R- p) _0 W8 O2 L) R' W9 T# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    2 M\" P# {( a) h: T* L/ d' P
  2. 6 o% W3 R: D' q, B4 o+ g
  3. # 增强+ c* {1 R\" [$ `8 C, ~4 W
  4. 0 f& c; Z$ M2 w6 J, [
  5. from PIL import Image, ImageEnhance
    1 Q- l: ~  f4 g7 H& x
  6. ; j\" n. ?5 T\" x: ^2 U# }6 T
  7. 代码实现
    ! B6 P\" O0 \  v

  8. # i, N) I% [8 v) y  e& ]
  9. from tkinter import filedialog7 ~3 ~+ c, g% t. I
  10. 7 H* ]  Y' a$ s\" @; [1 n
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    , ]  x9 y6 ]2 E7 Z

  2. ; J4 n( |& B( X  m6 G
  3.     file_path = filedialog.askopenfilename()
    ' ]  o4 c- W$ q& g6 p* J
  4. 5 ?: f; r6 I8 O* k& m
  5.     # 在这里添加代码,处理文件路径1 V/ [2 Z* |+ d3 t: b
  6. \" j) n3 T6 ^4 @8 P
  7.     print("选择的文件路径:", file_path)
    6 r9 ?( l5 ~$ r4 B* Z( H

  8. 9 n. Q- j7 H5 S% n! M8 `# s, @
  9.     return file_path
复制代码

  1. 7 Z' T5 \\" D- v6 M
  2. # 打开原图像
    # V9 A5 T5 g9 B- A& d1 _6 M
  3. 4 {. C4 `0 c# [2 t6 t
  4. # img = Image.open('image.png')
    / }/ B8 \$ G, T) q
  5.   V# |) j0 }7 x\" n
  6. filePath = open_file_dialog()
    ; @, s* D6 F\" q

  7. 4 H# H. b& p2 D. m# o$ ]- s! N; d
  8. img = Image.open(filePath), T, x2 s. J) `0 M& z+ f
  9. & [- ]  N* H: n1 ^9 \3 _
  10. # 设置增强因子
    % J  S\" G, z4 f# s; M/ |
  11. 5 V0 G6 C( @3 [\" d. ^
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    1 P1 Y9 v+ V% q: a* A+ f, h8 @
  13. ! V* Q$ d. V% V8 O2 @+ ?& g
  14. ; l( N8 _6 Y* [) m
  15. 0 K1 P9 M. \5 }- M  P; f
  16. enhancer = ImageEnhance.Sharpness(img)) F2 B$ [, G: M/ O1 [/ q* E/ o. t
  17. ( q  A! |! [5 W6 A! \
  18.   b1 a$ @+ W1 l. v; W( y
  19. 1 q3 \$ J0 O& M5 j) U$ c/ q
  20. # 增强图片
    : {+ X. S: s1 r8 y

  21. 8 h6 ]3 E: v. {' O/ j
  22. img_enhanced = enhancer.enhance(factor)4 Z, Z6 L% d+ i9 q  ?
  23. # c& {% O) q) P, [4 d/ [
  24. $ W5 y- ~6 G% X9 \9 _
  25. 7 K\" R+ W0 J& `  j4 ]9 n
  26. # 保存增强后的图像6 T5 U6 U7 A; w' b5 G1 [

  27. 6 Y8 y' ?7 K, _# W* Q. Z; _* t6 h* Z2 G
  28. arr = filePath.split('/'). k. o& \! y6 _$ N: F  Z
  29. $ d: p\" c% W( s, D/ j: i4 H
  30. i=0
    0 S0 f3 l8 A: y1 q9 O4 n

  31. . q4 _8 j9 @1 a' E9 o# O
  32. fileDir=''% \- y0 o+ |  Z/ \, ~6 u  w+ R
  33. , M; x6 n: f& K8 \
  34. len = len(arr)
    + e1 Z6 ^: R' F+ W# @$ y+ Y- i0 Z
  35. 4 A3 `. d( }4 d8 F; a; K  Z
  36. while i < len-1:
    5 C  v; r  ?; N& ]- \2 O' O

  37. ! [! E  M1 ~5 \* c1 W& p. Y5 h
  38.     fileDir += arr[i]+'/'( m, L% }. u1 |2 {8 D
  39. 1 U; \! M0 }5 @+ Y/ \8 q
  40.     i += 1, f6 U% M# v$ N& }3 p
  41. 7 f' _# A+ I4 {

  42. + e0 x% s* N# c: g

  43. ; I1 w/ n  I1 S, w: q
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])/ y7 t5 ]( Y7 ?% C

  45. 8 A- g4 h; b\" }
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
. y& t. z) u3 {8 ~2 z4 l
! j2 @3 t- ^1 p- e6 }增强锐度
  1. from PIL import Image, ImageEnhance! x/ G\" j- C* h# N\" F
  2. 3 U  b8 o6 k- W2 V8 S\" z
  3. ; x4 X; y6 _\" r# [; b

  4. . M1 C. \8 D6 ]& u; O
  5. # 打开图片4 G8 r( `0 S  b& e% l
  6. ! s2 ^1 G  p/ x! [1 {1 Z
  7. img = Image.open('image.png'): W& N% m, E/ |9 m! Y  a/ b' g

  8. ' ?\" F- F( V5 c% _) p9 O7 _. N

  9. / K4 @9 n4 E: w$ X- d3 w
  10. . H4 Z. A: F* p0 V8 e
  11. # 增强锐度
    , m2 H9 e% x8 j, P
  12. : z& q4 C8 N  @+ f
  13. sharpness = ImageEnhance.Sharpness(img)/ C. H8 L8 e3 o  C0 o0 z

  14. ! I' Q: J9 l0 a2 {5 f8 B
  15. img = sharpness.enhance(1.5)
    5 ^: H; D\" M9 w

  16. & R+ A( R: I' D$ ?6 J3 x- D/ t

  17. 2 V: B7 D; h. R! C. H1 T% T6 K

  18. ) o& C- `# k$ u8 `% c7 s
  19. # 显示图片
    : B& n# S  C5 d  t; H7 q
  20. 4 N+ _- f: Z. h9 y  T/ K
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance2 W, K8 ?, J# N1 D

  2. 0 z) P4 U/ A\" ]7 T8 ?3 i* w
  3. ) @( [) f6 [0 d\" u

  4. ! E' \2 _, j6 N9 @
  5. # 打开图片# R' N; ?8 k2 `5 g! O
  6. % I( H8 {1 D0 ]7 X: ~
  7. img = Image.open('image.png')4 ]9 q. G% j  }* v

  8. 7 H. }  Q# P  ^

  9. ( H% v2 s$ L/ F5 r2 t4 I+ j
  10. 1 b! |- ]8 T  x$ f8 C
  11. # 增强对比度5 Q3 Y) [/ y- E& L* t9 h, Y5 B0 V

  12. ( K- ]7 @* Z# O  e
  13. contrast = ImageEnhance.Contrast(img)0 R& j7 \5 O* N- A& V

  14. , N5 V( D# P# B$ L& i$ U7 U- X* R* b4 x
  15. img = contrast.enhance(1.5)# ]/ w- i) l0 Q

  16. 2 q. }4 |4 h9 H5 q; C\" {$ C
  17. , @, b* O, J  h; k2 P\" f

  18. ' a0 \, P( }% {- U6 z/ ~) }: q- z0 |8 g* F( T
  19. # 显示图片- V0 y$ s' S) ]. ~# g
  20. 3 L$ J% M2 c0 c6 R) C6 h) a  c6 l5 z
  21. img.show()
复制代码

1 W9 F! R. M; ?5 b
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-6-12 19:19 , Processed in 0.417921 second(s), 50 queries .

回顶部