QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件) @) W& H7 a9 m

  2. & m' p: {2 K4 T  ?\" j7 U
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))2 V4 ^! P0 Z3 G6 O

  4. 3 Y3 Q8 Z0 s8 b+ w0 o  ?
  5. # 增强图片
    9 ]8 _7 t' K( n4 L9 Q0 n' O$ z! e
  6. 5 Y$ d* c9 E! k/ `7 u; ]$ |
  7. img_enhanced = enhancer.enhance(增强系数float)
    $ b. H- g! V, x1 K$ }
  8. , V: p+ ^, J! J( s3 T/ B/ N
  9. # 输出目标文件
    , i0 \2 V8 Y: i6 H% |

  10. \" z1 v) r3 K: A/ t6 P
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致3 k! j! q. y# `! [5 G/ s
, E+ p" ?, p: C7 D# J# {& J
所需依赖
8 ^/ v! H0 K! n& e( m* n2 f) l# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    % r0 ^# N* H3 s9 E
  2. , v0 w* d. C/ t5 h\" K$ p5 y# D! b: J
  3. # 增强/ R' a# O; ?- f# f1 O
  4.   w0 V3 j' e' `( I
  5. from PIL import Image, ImageEnhance
    2 S# m% H- f  y4 q' I' h
  6. 5 I2 h; z* d$ F0 j/ A
  7. 代码实现
    # a\" f4 b1 n6 f

  8. & c! p: X4 t) q/ n' n
  9. from tkinter import filedialog. Y: m, n# x3 `

  10. \" b9 z) n% @+ C! @& ?% h$ f
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    6 m9 _7 C) N* R) {
  2. 7 f2 }5 m- q  C/ n4 o. z; h; w
  3.     file_path = filedialog.askopenfilename()' _$ n4 u+ Z8 @- H
  4. 3 w8 E, n+ b- O9 H) U1 y
  5.     # 在这里添加代码,处理文件路径
    . p7 U/ ?/ d, ]  v# z% z) L  ]% I; s4 o
  6. % L; P5 q7 L) ^( Z7 _. D! x$ l
  7.     print("选择的文件路径:", file_path)
    / ]- J7 T6 b! ?1 a: ?4 `

  8. : @& e3 y4 s4 B* O8 T
  9.     return file_path
复制代码
  1. 4 w4 E8 @+ @' V$ ^
  2. # 打开原图像
    2 w1 B# s6 j\" M( C( [) D* D

  3. . ^6 C5 \; g) D9 T; Z: }3 {
  4. # img = Image.open('image.png')8 k: R2 k$ ], k

  5. 4 w# \% M$ ]' E
  6. filePath = open_file_dialog(): t% Q1 ^( H6 g\" V; H% ~3 E

  7. - m( v& i+ u& i/ y- q9 s4 O' L
  8. img = Image.open(filePath); |$ ?8 o3 c; v

  9.   F! F$ a( w) V
  10. # 设置增强因子
    7 \, k! Y  d# ^5 R7 V

  11. # Q) \- C3 T) Z7 v1 e
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    8 s4 v\" y9 v; _9 ], W/ W
  13. 2 V7 i  y* g  A: Q' `# P\" t
  14. 4 n' N1 G8 f, [2 c, z+ t

  15. ) ]3 ~2 V; D1 `9 n
  16. enhancer = ImageEnhance.Sharpness(img)0 G; D5 x\" g/ L3 ]
  17. * j\" g\" v0 D  ~  G: e3 U! ]

  18. 5 C7 V. c4 g( i  z  r0 V! z
  19. . f4 b9 \; O2 `. }
  20. # 增强图片
    5 w3 J3 }* b, F
  21. 9 J' z: d7 C' ^- S, W
  22. img_enhanced = enhancer.enhance(factor)
    . z7 G, }4 i5 H7 b

  23. 4 z; ?( F( a\" e4 ?% f5 H5 Z. q

  24. \" K\" U$ Q\" Z\" c  D: f/ _7 i0 c
  25. + |\" U7 Y8 h( D2 _  e! [3 q
  26. # 保存增强后的图像* `+ T$ ?3 ]' x6 i
  27. 8 L5 q- b\" T( Z/ m) I& e
  28. arr = filePath.split('/')
    0 g& t! D3 S) L: J0 ], R

  29. 5 f; J4 h' {, V' F% y9 b\" t6 k
  30. i=0
    - T4 u2 C1 u' b5 Z6 H  c

  31. + F\" t\" X: @9 G2 m- @# |
  32. fileDir=''\" K! \+ l\" ^% f
  33. . @; v% N. E) u5 \
  34. len = len(arr)) i* B4 _1 m/ s* w% R4 v

  35. & _* W  v9 n\" O' g5 g# U! F
  36. while i < len-1:3 g7 K\" d\" S9 R; g
  37. 0 _7 C0 B: x1 x' a; M' c( |- K8 v
  38.     fileDir += arr[i]+'/'7 q7 e8 t0 [$ o4 k! R9 d' C

  39. : Q- s4 O. _3 S, n1 R3 p# i
  40.     i += 14 n& C- U8 g1 u& W( |' W( s, ^& j
  41. 5 |6 d! K/ D! ^+ B\" p4 I

  42. 3 l% F, Q. r- C# K2 w* v& M' r4 a
  43. 6 O; r* l# S& ?
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])- Z: Z1 u% {$ U* |- q* _& b

  45. , Q6 G, ?+ C6 P! t0 r# R  v+ Q8 K8 O
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
4 {; K& A' r1 p9 I( ^9 v) F
, W5 A7 G- M4 V; v! [增强锐度
  1. from PIL import Image, ImageEnhance
    8 V0 B8 |2 i3 m
  2. 2 q8 ^7 J/ ^6 b( o
  3. 2 n. ^\" Z% z, n0 x- J: G1 x  P: x
  4. ! d6 O7 d# E- i0 r0 i. x
  5. # 打开图片, f\" i' U# f3 |6 ^! O! d# F9 T' y- A! W

  6. 2 [- Q; T' U7 g; V) q* r5 C7 x
  7. img = Image.open('image.png')! z  |2 p7 Y3 [
  8. ' e. B& g; N+ f! n

  9. 3 J/ R# h( }7 Q

  10. 3 l! Y  j+ I* V& \/ K) n$ b7 D! m
  11. # 增强锐度- U7 v& u0 A: n2 K5 G, k& H! m
  12. - E( c$ l4 {- G+ P# l3 m
  13. sharpness = ImageEnhance.Sharpness(img)
    1 o2 s9 q/ s8 [8 _: t0 A9 _
  14. 2 O0 p& v/ V0 g5 b1 N
  15. img = sharpness.enhance(1.5): p# k0 W  z: D3 @+ j
  16. 1 W: F( @& C0 {7 d6 h  c1 d

  17. & F  m& i% N  j7 W  T
  18. 5 W# p( g/ [2 R% I\" P
  19. # 显示图片
      l) C1 c9 j. X1 c; B/ v

  20. \" x) |) K( g0 m8 G8 a% j
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance2 v3 p! h5 Z% i$ o0 K

  2. ' N- z\" w1 j) e

  3. + V4 A9 x4 C- V9 M& [$ r
  4. # M  X2 N# Y$ o, D! F* k4 C
  5. # 打开图片  }  X\" V' g, b* H
  6.   k' _) E# w1 x1 ^! ^- ?
  7. img = Image.open('image.png')( H\" L) A; m$ r5 c
  8. 6 h3 B8 i' b- A+ ~9 l& K
  9. 8 {) j% e\" f2 v% e7 R. P

  10. 9 B. Q6 q  c- ?# m, O
  11. # 增强对比度0 f! J2 C$ z% h$ X: O* A) M
  12.   P- ~+ m9 \2 R  j. {
  13. contrast = ImageEnhance.Contrast(img)+ b& k, e# H- s. c% O# }
  14. ( u' R7 S6 R5 r* K, S' T
  15. img = contrast.enhance(1.5): q* N8 r; W/ X& c% s
  16. # U' j1 N: t# M\" |. B

  17. , T/ o2 z& F. f6 O7 h
  18. ' e* x6 n3 @0 Y  X) u: U! b! ^
  19. # 显示图片\" Z' G, v* |/ z, F
  20. & @6 t, y8 m8 R! T/ G4 i8 b. l
  21. img.show()
复制代码

! p: E/ d) W7 ?0 ]( }
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 09:26 , Processed in 1.804737 second(s), 51 queries .

回顶部