QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件1 n# t1 p4 F& H* K. _& F4 F
  2. 9 |7 Y. k, e. `  a, E
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    ) {6 L) h0 v4 t9 n5 h
  4. ( S, r: e+ r% V! w
  5. # 增强图片, @2 v8 S, ^- U1 I. g0 Q

  6. 7 `  ?' U- b7 ~3 ]+ ?) s. _
  7. img_enhanced = enhancer.enhance(增强系数float)! A; H$ e1 Z% J
  8. ( F  n( H* c! e; B
  9. # 输出目标文件
    9 K! I8 C/ s+ U

  10. ! A( `: N; G% N$ o
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致9 [; }8 [% {4 u% p- C2 ]9 O4 U5 ?

8 d' E. {0 z& r所需依赖* N& p9 p; H# B% o+ i
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog6 y& V- h7 c- ?0 Z7 k7 }4 v2 L

  2. : B, e1 }) t- s: h5 n
  3. # 增强
    3 ?' m, Q( Z  h. b' B  ?- a7 {
  4. , F( l0 y9 {4 B7 K- n: }# n9 A0 C
  5. from PIL import Image, ImageEnhance
    : o7 T4 \/ w# }

  6.   q8 {\" D( F' y* e& c
  7. 代码实现
    + u) n* A7 [1 ?; f
  8. - D9 V( c' O4 `\" Y' G0 }! }3 _
  9. from tkinter import filedialog
    ' W* z. h8 P0 l\" |& u

  10. 8 ?5 j! N, t\" Q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    # F6 e) y& f: l# |, I+ a
  2. . w/ ~$ B: R% Q) o$ B. f. x  M
  3.     file_path = filedialog.askopenfilename()
    $ s( i  x, C2 C2 g% b& Y5 |' o\" f/ x
  4. - J3 ^3 e' Q7 m  p; G
  5.     # 在这里添加代码,处理文件路径, s0 Z  E$ t. m  W8 k( l
  6. : h9 o$ t5 B! k\" y* }4 g
  7.     print("选择的文件路径:", file_path)/ S$ X9 t2 q+ _2 @. H+ f9 F6 B
  8. 4 X6 N7 B5 E+ {9 ?9 ?
  9.     return file_path
复制代码
  1. 1 K; U8 X7 |2 ~4 D0 `
  2. # 打开原图像1 E4 v% t6 g( N' e4 }4 v6 v3 r7 H
  3. 2 k6 z- a8 {: `0 g
  4. # img = Image.open('image.png')& G$ }+ a. I5 z  r+ M

  5. ; E$ B# s# M3 K# t) Z* }9 j' z9 _% f
  6. filePath = open_file_dialog()
    2 U. _$ m1 o+ l# p9 R, D3 {$ N

  7. 5 F, S; \  [7 X  @+ I
  8. img = Image.open(filePath)- Z' a1 [: C( ?' w. B+ A

  9. & J' N5 x1 L- z; O
  10. # 设置增强因子: a: r6 ^8 ^8 i
  11. , E# Y1 N$ w/ G' \% s6 w
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    2 Z* L0 W/ K1 _0 k
  13. 0 _: P( O% S\" F9 B! Z' l% g! `. X! R
  14. - a3 i- R( E. P1 V' {/ r1 K! q& e

  15. 1 E, p) W0 {7 l! K\" @
  16. enhancer = ImageEnhance.Sharpness(img)\" w3 D% q* a( v) a( c

  17. 8 H5 G* k, N+ a7 x' b) b% c

  18. # P: i5 j) U  P3 \+ `0 o
  19. 1 x1 h/ Y: N$ D; B5 X. c6 f- @3 h, _
  20. # 增强图片
    * I. s3 b3 e' _' o! n5 W7 C\" M' n

  21. , D- q( Q9 g7 T! f/ ~/ r6 S6 H\" e
  22. img_enhanced = enhancer.enhance(factor)
    ' j! [' V6 [7 X! [9 }) B* W, B

  23. - L% D  M3 s& L  l6 `5 L4 P

  24. ; x  }\" `2 Q- T
  25. : H1 X6 e! u( n
  26. # 保存增强后的图像) f/ H- P4 C/ c- X8 d
  27. * R1 m# A; h& |- j* X
  28. arr = filePath.split('/')
    - ^; \( |% c( q) @* b9 S\" X) T/ C
  29. ( C9 d& c+ i6 x( h- Q9 F
  30. i=0
    \" Q# Z6 b' a# I

  31. 8 f8 K! s% V7 N. P& |! x5 u
  32. fileDir=''
    ! ]% d5 X5 [2 P, i
  33. , i, |# |# l; u8 |3 t9 w& Y
  34. len = len(arr)
    6 |9 F7 G$ [+ y' H

  35. + O4 {$ B+ }0 |# G+ s! c
  36. while i < len-1:
    \" v) p9 n2 |\" g: c7 s\" e

  37. 2 f8 i. D- Z\" Y' U\" V
  38.     fileDir += arr[i]+'/'
    \" t, Z\" {# p# D5 }

  39. * o$ E4 c3 }+ y/ r/ ?2 E
  40.     i += 14 m( b2 i6 A3 i3 `

  41. # |( D* W' S2 M# a& _! Z

  42. ; A# m2 Q  V. @/ _

  43. # f\" ^  N; }+ }1 i' Q4 Z! `
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    5 D! F\" Q' ~\" r6 T2 Z1 d- d# ?/ Z

  45. . p- q, s0 U6 t( F, R! k
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:5 R; N8 `  W8 p% f
: e3 q" s3 k4 h& x
增强锐度
  1. from PIL import Image, ImageEnhance
    \" M( F# s. X. |# ?9 d4 N' P
  2. # W$ c1 n3 ?3 B
  3. 4 @. c1 B- ^) M- N9 X- a
  4. ( X, s4 V+ M# X% }$ s8 e
  5. # 打开图片3 C: {( I& a7 _- V5 p: v: j
  6. 0 W- d4 q2 G: c, X4 [8 |
  7. img = Image.open('image.png')$ J$ {\" T) s: N! E8 T
  8. - Q3 v* G4 o! F! `

  9. , `( |1 r/ |$ l* ~2 ]: p0 Q7 ^

  10. 3 u/ A9 H+ J  |' k
  11. # 增强锐度
    , ~4 c% Q. `' {: Q
  12. * {6 h\" w, ?8 V5 j8 n5 v
  13. sharpness = ImageEnhance.Sharpness(img)! U  @* j# @# v* D# N

  14. $ I6 D1 g% P' m7 H. @. d7 `/ X9 x
  15. img = sharpness.enhance(1.5)
    $ A1 o$ }% R. s. ~. k; ]; |; M( l) u5 T
  16. 3 h* L8 n2 y5 h4 v! b

  17.   q* {% s( }; n9 i3 q8 \

  18. / C* z1 O- ?8 R( x/ U\" h
  19. # 显示图片
    . {0 }/ ~5 h% H7 Q1 ?* X
  20. 0 G+ ~  o$ X! l6 y0 T7 ~
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance
    1 x. e. [6 H$ y

  2. , t4 C2 Q0 k$ z* v% ^

  3. ' S( J' q% @) H1 X' Y' h
  4. 7 r3 P% f# q( {\" X4 ]
  5. # 打开图片
    ! ?4 Y8 Z' ~7 y
  6. % R# n7 a, D6 q2 N$ M% x
  7. img = Image.open('image.png')
    9 L# p3 T8 C+ [3 d

  8. ; p: c; D5 p3 ]\" k

  9. 9 b' x0 }1 `% M$ O( X4 E
  10. ( ^' u; Z2 `5 A! Q\" g, r
  11. # 增强对比度
    \" g5 i8 w+ V2 _1 E. `

  12. ) ]$ T0 c8 |/ M1 d- R
  13. contrast = ImageEnhance.Contrast(img)
    . N& U* z; M* N0 V
  14. - y: Q/ }1 |4 @: a* s
  15. img = contrast.enhance(1.5)/ F- ^* B% Z\" q8 ]

  16. 2 r/ V  T. D0 U: D2 @0 q
  17. % A' y$ |- t; O

  18. 0 S2 t5 q2 _: U. t  J  Q+ m
  19. # 显示图片3 C4 v$ I- A! v9 g! {+ P, h+ `7 v
  20. 3 S: G1 S) }5 x9 Z7 N, `
  21. img.show()
复制代码
' J+ I$ z& Q* Q
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 13:13 , Processed in 0.425096 second(s), 51 queries .

回顶部