QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2975

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    0 T\" R  M! b/ F) E: U\" C
  2. : P: m: c+ ^3 s) k- Y; C
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    3 g9 E8 x0 w6 i) E; @

  4. 6 F7 K4 ^+ I7 K8 F9 y
  5. # 增强图片\" I* F  l! C- o! a5 [) {  o5 {$ f
  6. \" H4 B: X- }, P0 f
  7. img_enhanced = enhancer.enhance(增强系数float)+ _& ?, x) B3 Q% p

  8. 4 K- S5 j- x1 M
  9. # 输出目标文件
    & X1 }) o1 d, i5 H
  10. 5 n3 }. M, H8 Z# ]- O
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致- g" \2 J1 T# e: M) {5 Z
# f; O( A% z* V4 W5 q% ]2 q+ e
所需依赖1 ]) y) L: p# f3 N& ]9 w3 F$ Z
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    # ^( _& V- i\" s5 ^1 P
  2. 5 V# H$ Z& ^7 j
  3. # 增强! w. _; n4 @9 d2 I, ~
  4. 8 ~  d8 j- e: |
  5. from PIL import Image, ImageEnhance5 F$ n8 P\" ?1 \1 r$ z* V- F, L; y
  6. 3 b7 _' N, w# s% K- w6 {
  7. 代码实现9 E! {) x) l/ r0 q2 h
  8. , f0 o# `- T\" `0 l/ b
  9. from tkinter import filedialog7 u9 [  M7 p2 z\" z8 n  S$ m8 X

  10. 8 D: x8 m+ W3 R: m. Q+ a
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():& Q( I& q3 |) F9 h& D8 d' Q
  2. ! q7 Z( b$ m\" n! U  j
  3.     file_path = filedialog.askopenfilename()) G8 _& r7 \% u# H) |8 ?2 z

  4. ; I1 _# \2 h& @4 D% h5 C
  5.     # 在这里添加代码,处理文件路径
    4 z- X7 k! g( I+ [' V3 ]6 R5 [
  6. ; T. v5 T0 z2 B9 H. Q0 M
  7.     print("选择的文件路径:", file_path)' d$ R- {0 e$ w: r3 {
  8. 7 j# C/ f3 R& w* Y
  9.     return file_path
复制代码
  1. 4 Q\" l$ j' G4 r! [1 Y% \( r: u
  2. # 打开原图像9 {1 A2 J% L7 A

  3. * v7 W: g  [) y
  4. # img = Image.open('image.png')
    ; a$ g) W9 V& r5 D7 S1 n' J- g2 M% n
  5. 6 U. ?/ p8 X: ]$ P0 u' `' [
  6. filePath = open_file_dialog()
    ; N& O& W8 W/ \  w; @5 B
  7. # X% g, g) v  L  a
  8. img = Image.open(filePath)
      l6 @( x/ X8 x1 E$ q5 L

  9. 0 n! n1 {/ ^( H8 Y0 Y1 f3 O- O4 f' ?
  10. # 设置增强因子
    9 M  [) F  w# K
  11. ; v2 }0 H$ W( z1 P
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    2 D' X; I# C$ w. `, O! C9 v$ V3 V
  13. + L/ j7 n\" p  ^* c

  14. 5 ]$ d( b& L& c! U- |) J
  15. 1 ~2 M$ }7 e( A8 l' p& V8 I# ?# Q' W
  16. enhancer = ImageEnhance.Sharpness(img), K+ V2 v1 U6 C. R0 @

  17. % q7 v1 v) I5 ]5 ^& v3 D% [; l
  18. \" k- T* E9 M) k

  19. \" C- \* Q( }7 O5 S- O
  20. # 增强图片
    * M6 I5 R. f- Z\" I
  21. \" z# P% p/ G/ }+ j
  22. img_enhanced = enhancer.enhance(factor)9 R8 T* J1 p4 z, g( F
  23. & O. w2 ^. o$ n8 `$ v6 n0 {
  24. 6 R5 J3 t) b, Q

  25. 3 S; B. H. N1 l
  26. # 保存增强后的图像
    9 J. J% W4 R8 L3 K& C/ a7 K

  27. ( ~  c; \5 N2 ?\" Y
  28. arr = filePath.split('/'), T3 _8 S, R. B) `) J( z

  29. 7 ^; T0 k2 Q' s: L5 L
  30. i=06 e% S- S7 Q( x- z# J/ z7 D' B

  31. ; ~5 B\" h( Y5 @6 v) p, }
  32. fileDir=''/ r4 D7 ^! q$ J' K% a: y2 J

  33. * s0 e8 j+ b+ M& G/ K* a! {, V
  34. len = len(arr)
    ' q7 U1 C' M6 {8 _
  35. 3 a: ~0 L& z- ^$ o
  36. while i < len-1:1 c8 I* O0 Y- J6 G6 t
  37. 0 X3 A/ e6 b4 A. n
  38.     fileDir += arr[i]+'/'! K& [+ ^+ g6 ?( g( g( x, [- x
  39. 1 s. L6 |8 P$ ]\" p% m+ d. D
  40.     i += 1
    0 c6 F7 |6 l! a' Y6 M
  41. * @9 t( S9 w2 I  c8 J1 W

  42. + c* B0 W\" f7 [
  43. ( c6 S\" Q' ?4 G2 ]\" `! R
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    / ^6 W0 |8 M3 W7 |( z

  45. & \$ \/ N# O2 x1 T6 @8 p  c: L
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
3 D8 K) c( L! z: r$ u, T; _+ Y9 V- R1 X: J4 g+ ^$ F' g7 q  d
增强锐度
  1. from PIL import Image, ImageEnhance
    0 j2 L+ z0 b; u0 H\" n
  2. 6 g/ f0 o& Y) c2 Z

  3. 4 i# ]) s. s, k

  4. 3 p3 k6 L! d) z% V. l7 s/ D
  5. # 打开图片0 _1 |6 j( G! K+ E( L
  6. - x$ P- I' v7 [/ Q, ~  u; v
  7. img = Image.open('image.png')
    . U5 |/ M% l8 h$ J\" ~

  8. 1 c* v9 D% r- s5 P

  9. ; P0 N/ S1 ~2 }! X* z

  10. , Y/ h2 e* m% ?- u/ j3 `' @
  11. # 增强锐度/ e0 o: V1 u6 s# x0 f. I7 ?\" J
  12. \" {1 |5 {9 e1 n
  13. sharpness = ImageEnhance.Sharpness(img): C6 O' B\" o7 f! g' j, z
  14. , `+ g# z9 K) j7 ~4 K8 l. }' f
  15. img = sharpness.enhance(1.5)
    6 G( h6 _4 O1 ~9 U9 R
  16. \" c: y: ^! K' T5 Y

  17. & x+ ]$ Z\" d9 M/ J9 ]1 D
  18. 4 h) Q, O* q5 W: O0 M5 u' N
  19. # 显示图片2 f. [7 i) W  F- y! ~
  20. ! }9 G# Y' s& B' f
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance% W* E7 y( b$ e8 k9 o/ J) s

  2. 0 v4 T% Q: v& O8 o' `9 n6 G0 c3 A

  3. / x* k; H5 c\" t% v' _
  4. $ z8 z' I( M# j1 u( ^1 ^5 n$ ^
  5. # 打开图片
    ' F. `, l\" u) Z: X/ w- a! G7 i

  6. - Y0 E8 d, K. K' h# o3 ~% W1 x3 H3 D
  7. img = Image.open('image.png')
    3 Y' n. U! ^% [3 n

  8. 1 u0 @0 ^% f1 v! ?1 n* V* m

  9. 2 j4 [) a5 S8 D7 _* U
  10. ' M- a0 r  \) |4 O; q
  11. # 增强对比度
    . p  v3 d- |/ y

  12. ) J1 w. p9 u( Y# ~
  13. contrast = ImageEnhance.Contrast(img)
    . M* o( p( v0 P8 H  Z3 @0 g  j; L
  14. . F- U+ G5 W9 I/ y8 T/ x# w( \
  15. img = contrast.enhance(1.5)
    2 y) l( l' m8 H# Y# w
  16. 9 Q7 L2 Y1 E: |2 i
  17. 5 t$ ^\" B0 a& N
  18. / H, p\" v9 j# j0 }# B
  19. # 显示图片% D# s- C4 v. r9 |3 _
  20. : Z7 u. \7 X7 E- X& g
  21. img.show()
复制代码

* k- h* R( h! r" b. U7 n
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-9-12 10:01 , Processed in 0.334968 second(s), 50 queries .

回顶部