QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2978

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件\" y5 G$ Z# N( G3 L* a
  2. ! y# V5 Y- [1 R6 `# G0 u( Y. c
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))9 s\" x0 n$ ^4 T' S3 U* R
  4. 8 N6 u4 a\" y5 G) z- f. x0 O
  5. # 增强图片\" |. P; M6 G: L. m3 H

  6. 2 Y# y4 A$ `& w: J. z1 S& t2 Z
  7. img_enhanced = enhancer.enhance(增强系数float)- T9 C0 T. _- X
  8. 4 |1 i2 R( \5 I' {1 N# l
  9. # 输出目标文件
    4 J  u% x5 k9 f* [0 q$ ?

  10. 1 T! c( o$ O) H4 l3 C6 K/ G  c
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
6 @+ K9 u# m9 x3 [" E/ B% d) ~  H: |& i" {7 q  M: \1 O
所需依赖
2 r( g0 I* L5 X+ e& a9 U. t. h# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    % B8 }. M3 U# \& ], o1 }
  2. ! g$ s2 `$ a1 k  \5 m3 r
  3. # 增强
    6 ]8 O# C6 o1 L+ s+ X# g4 r* E! R( e

  4. - t0 S+ H' l  M( \( |: x: `1 k: I- d
  5. from PIL import Image, ImageEnhance+ S' S5 E2 \0 k
  6. 6 J+ Z. E1 ?, t3 ~9 Y5 p
  7. 代码实现
    6 W3 H' ^  O! r6 e: e
  8.   c7 y& d! P5 e! y8 H
  9. from tkinter import filedialog7 X/ v, {3 n8 `8 E* U! W; t5 I* O
  10. . k3 P\" }) N$ p6 g$ t) T1 Z5 @
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():6 G$ ^8 I! C* i, ]; L( |
  2. - w. v0 M# _+ q% {- o
  3.     file_path = filedialog.askopenfilename()
    ( @, e. J3 f. c( v6 M# }
  4. ' e: L7 s' e6 U) y, ?8 n
  5.     # 在这里添加代码,处理文件路径
    \" j) v+ m: ]4 Q2 f
  6. 1 P& D! E5 g3 G  c' i
  7.     print("选择的文件路径:", file_path), B; W( ^+ b5 D\" u. U& i# X0 n
  8. 6 ^0 w( ^- m( E  B/ j7 i! k
  9.     return file_path
复制代码
  1. # r$ r- G, Z0 N4 y0 w+ I/ f% }
  2. # 打开原图像0 ?2 }: n0 |5 P% e4 @, L. a

  3. 0 i6 T6 P! Z; j' r3 |, u
  4. # img = Image.open('image.png')/ ]4 X) B- e& y4 x( h
  5. % G8 f- j- {7 }6 e+ r
  6. filePath = open_file_dialog()
    4 ^4 j/ v' B3 u! X! V6 q

  7. * z; O, k9 n' Z$ L7 q, v6 y+ _$ h- N
  8. img = Image.open(filePath); V8 `3 L% |: }4 U
  9. - B, Q* D! f0 I2 s' Y
  10. # 设置增强因子
    % e8 r9 W7 K3 J. g

  11. 8 C; l2 Q\" }0 n3 S! x) x
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    1 o4 K  r% a/ l
  13. 3 F( M: x0 q& r! A
  14. % K; ]+ r, h% `* w
  15. 6 J# W& ]6 T# ]6 B# o$ i: I
  16. enhancer = ImageEnhance.Sharpness(img)1 k* P2 C) p: R) r% B
  17. & \5 w' l- m& c5 R

  18. 7 e\" j8 x\" f, B0 ]/ j

  19. $ |6 m) P. v* D2 h, _% D2 m
  20. # 增强图片
    . O( L/ u& [2 ~7 a2 e, f) ?( S, C. ]
  21. ( }! F5 z; I( c, U
  22. img_enhanced = enhancer.enhance(factor)- e6 i& E9 c\" b

  23. , |, C# }, ?7 U6 W7 l1 z4 q5 m1 O( N

  24. / K, t8 q' o& S8 C% n

  25. ; H9 Y  d( `& v9 X: i+ G2 }% w
  26. # 保存增强后的图像1 C) H; M( I- R; r! W& ?3 X/ y

  27. ! J# I# ^3 j7 x( q0 y) ^: V
  28. arr = filePath.split('/')
    5 L' c1 y& F) _% g6 N' s0 Q
  29. 5 G6 S5 O9 X% @\" C# U
  30. i=0
    0 {6 f& d9 P- v% E' J3 h

  31. 0 q/ G3 @. o8 P4 J7 R. T
  32. fileDir=''% k9 ]! `5 `. A$ n: U
  33. 4 D9 |3 \8 l+ Y6 W; b% e  W* r
  34. len = len(arr)6 t1 W& V- Z# w' k5 z  _7 O4 M; c' H
  35. . j% k/ l  \0 M, V) m- k0 c
  36. while i < len-1:
    ! w! y2 n  P- \/ r- H+ F8 \$ Q' k\" m

  37. . `4 c4 l( Q4 }% A, [
  38.     fileDir += arr[i]+'/'
      ?/ Y1 H& d0 G  X+ v- ]

  39. \" u& n- s) c7 k
  40.     i += 1
    7 N6 r* c. ]. s; F\" [

  41. 8 H! d: O- c) P$ O; \

  42. . y\" k! N) }( |
  43. , F1 p' F7 @, c\" z2 x& p+ O8 `/ r
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])& ]7 b2 l, ], A$ j
  45. ! \% `$ Y( X+ V' R5 @7 S
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:! F: v' c6 o" G3 J9 g+ h: j
3 X! y5 y6 \; \. V
增强锐度
  1. from PIL import Image, ImageEnhance5 b+ V& ~* {# }! L, Q
  2. \" X8 v& L7 f# b2 I! ^# r0 M$ w0 r
  3. 8 z/ W2 l4 n6 I5 ^+ q7 a! O
  4. 2 Q; W, K& ~5 [' E
  5. # 打开图片
    ! P/ M\" a/ ?6 u  {3 U) A

  6. 9 K) ]% q: f9 ^- F0 z
  7. img = Image.open('image.png'), Z8 ~/ S% A\" H7 g0 b* H

  8. % Q5 S& O0 I6 g7 O

  9. + F) P3 J9 e3 ?4 _. s0 v
  10. / @6 q+ w) R9 I
  11. # 增强锐度
      w; B! M! {, j& ]8 {' c0 j
  12. 3 l9 X5 O8 I9 H/ s
  13. sharpness = ImageEnhance.Sharpness(img)
    ! f9 c. o\" N9 H4 S( \7 g
  14. # X3 r! A0 U6 @5 X& a* X
  15. img = sharpness.enhance(1.5)  j2 N1 @& b* v' b% L( ]% d7 y4 O

  16. % \4 y$ g- e! _+ x7 a

  17. , Y0 U) ?. \' D& i* Z) {+ M' N0 N
  18. ( L$ J+ u5 s0 ]) U$ \0 h
  19. # 显示图片6 o, k, {6 b; g9 K3 F

  20. + C9 P0 U) C2 r3 n) U# E+ k& b) |
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance- C) g( t# Q1 E* Y* a, ?

  2. 9 ?7 G* x8 Q: j4 ^- k# b$ a

  3. + o) L2 A) C: {& H
  4. 3 x+ I* U/ I3 m( z& a- y
  5. # 打开图片
    / J- ~3 |# R+ M& D& ~' c; n. w
  6. & ]\" X& `% G\" D) D
  7. img = Image.open('image.png')
    , N\" `% }' _9 [8 z2 q\" c* d. ?! S8 r
  8. 1 Q$ {. F1 i5 k0 L4 ^\" |$ P
  9. ) q  }$ h! A\" b. \1 A( n

  10. 5 o2 a4 k3 i! k5 q7 ?: `# W
  11. # 增强对比度
    1 Q; C9 Y8 I5 p0 H! o) V

  12. ! [# d' S( B- I' q7 p; `  n
  13. contrast = ImageEnhance.Contrast(img)* F6 e1 [3 A' H3 |& e2 n/ l) |, w

  14. 0 ^! ?- X6 R9 w- Q' d0 Q' N
  15. img = contrast.enhance(1.5)! p0 Y: N( Y, d: B

  16. 8 ?6 c! J. F$ W- |8 R
  17. ) [8 ]7 X4 K- M8 k! P

  18. 5 q: `% x3 y1 \' i
  19. # 显示图片/ M% M$ q1 b\" H( @

  20. / ^7 f& K$ D, Y! k8 Y6 w. Q! l0 \- w
  21. img.show()
复制代码

( f* i, x) v0 q: Z
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-10-14 07:01 , Processed in 0.579918 second(s), 51 queries .

回顶部