QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
      j* J: U\" k( W# n' C8 i

  2.   q0 {4 w1 }9 p6 n
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    $ ~/ T\" G  p7 T# U, a* l+ ~

  4. 4 h: [# f( t- T$ ^* G( N2 U
  5. # 增强图片3 f  ]+ o7 {3 n* W! `* a

  6. 0 V; `8 a1 C0 \. K$ c7 I, L
  7. img_enhanced = enhancer.enhance(增强系数float)* F' ]2 n/ _/ h* v

  8. 8 E* p  h2 P, y% D; \& p5 V8 m3 _* B
  9. # 输出目标文件
    0 C* b# |5 @/ l$ H+ W8 t

  10. 7 l4 H8 t4 r3 [9 _
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致& f% Q. f# |3 Q' x4 Q

0 }- z1 f8 H  i' |0 {  C6 \所需依赖5 K. S% v( r. k" x; h- q1 c+ T
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog\" `+ u3 k3 U\" @+ [8 H6 Y: X& X

  2. $ U9 J1 H, p7 k) z5 V4 T! }% j
  3. # 增强: R1 K, V% s3 Q/ }& m

  4. 3 o  u4 f/ S: Y6 m8 i
  5. from PIL import Image, ImageEnhance: V\" o9 j) `/ b$ \! B
  6. # j# a  \/ _0 X
  7. 代码实现% P& h- C\" }; M) T# E
  8. . U, V5 T+ {9 Q$ h, L( f& \
  9. from tkinter import filedialog' R2 d0 F/ E. O\" C

  10. : Z! i# _\" e8 u2 W- _  q
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():% G! G6 l' k* p: v# P\" n6 h
  2. ( o4 {, R; z4 O& F  [1 `2 F$ v! \
  3.     file_path = filedialog.askopenfilename()
    ) f7 o3 N9 h$ I8 q1 _7 F, J
  4.   \- g1 ~. b4 Y0 z. ~* ~) g/ x' J* x
  5.     # 在这里添加代码,处理文件路径
    $ U4 f  R* C2 z: E  [, e

  6. 0 L/ C& Q+ Y. u. f- d  q
  7.     print("选择的文件路径:", file_path)
    ; t( j6 ], h. A9 u$ S7 S' V' U
  8. + B& I- Z# Z$ }\" j/ l
  9.     return file_path
复制代码
  1. 2 V- @; R* Z% v/ q! M
  2. # 打开原图像0 v3 `! Y( o3 I/ y

  3. ; i1 o2 `! o; n
  4. # img = Image.open('image.png')4 ?' P* P  }( m4 H. r

  5. # C. ?% I: R+ Z0 b: O0 t
  6. filePath = open_file_dialog(). |6 l) r, \) b2 l( Y
  7. 1 q( |+ k, x) U' a/ ], k
  8. img = Image.open(filePath)8 r\" `5 f# X9 f- S& ~

  9. 6 j0 k/ l# O! T\" i7 Z- p) S& \4 D1 g
  10. # 设置增强因子
    2 Q/ D% l5 e% A4 Z; g7 J! \: _

  11. 2 O* [  U  H. X( ~4 d* \
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    ' w6 v\" k; c5 f9 `: @$ p/ E

  13. ' R/ I7 d  i- s

  14. ! x\" D$ Q( `- v. b1 D# d, ^
  15. ( T8 J' ^\" t$ Y% ~4 x\" b, r
  16. enhancer = ImageEnhance.Sharpness(img)
    8 P+ J1 w! U. |, r. F7 ]
  17. 7 u5 [\" d' K0 M( e1 V

  18. & E\" w, H  O+ ?9 H/ ^3 m
  19. ) G) t( s9 x8 h1 h4 W( V! O
  20. # 增强图片
    8 E/ a' \1 {4 G

  21. 3 E3 a( G6 o! J- N4 r; ?
  22. img_enhanced = enhancer.enhance(factor)4 v/ E3 {+ ]0 }

  23. # `( _! O' V4 P7 q1 |9 }

  24. 4 z1 o+ G& i, z7 f

  25. \" v% {5 X7 b8 M- l! r0 e
  26. # 保存增强后的图像. w, T4 B8 V\" [/ P, m8 T
  27. / H3 ~* c& N7 G\" F$ D
  28. arr = filePath.split('/')
    : k8 B  \9 u$ Y: O, h6 {, I3 l

  29. * e! f/ c# M0 o9 N6 r7 R1 Z& m7 Z) ]
  30. i=0. x2 H$ h' i5 d1 F# S. ^6 Z* c9 [

  31. 4 \; G\" M7 j; _# i3 R8 \
  32. fileDir='': r3 |1 F' R4 ~( Y5 F. T1 X1 ]
  33. 1 m7 [2 o5 `% O  V- e6 Q
  34. len = len(arr)0 z4 I6 b! n4 {: s) ?4 r4 g  L, M- R2 g

  35. 5 ?/ H: A- w( A
  36. while i < len-1:\" c; P5 e0 k- o: A7 g
  37. ( K4 n$ z. e1 H# Q' v
  38.     fileDir += arr[i]+'/'
    - B5 {, r+ T& H- J1 C

  39. / P8 O\" k. a. A$ m' f
  40.     i += 1
    1 _% ~+ H- ?: l4 J

  41. / n( E! C\" c8 _  E2 b0 U1 L
  42. . q* U8 k) t7 {' a: H
  43. ! J) M+ h& _% _% z
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])4 Y\" i, J. c* [3 t! U

  45. 9 b. g, k3 k$ M$ m# r- H6 ]
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
3 T4 P* O1 r* O1 L
% o; Z1 k3 j; m/ b/ \9 P6 S增强锐度
  1. from PIL import Image, ImageEnhance; |5 ]2 Z6 D6 y3 v/ W, e

  2. 4 m  t/ ~- h9 G( \
  3. 7 |2 t6 f4 I* G: P
  4. 9 l/ R7 U6 }! P6 T2 M, Y6 Z
  5. # 打开图片2 W' ~\" L! A1 L7 _/ T; c! m
  6. : C# [- W  s: x2 D! i: k; o8 O
  7. img = Image.open('image.png')
    ! @  O% U4 ]! U/ w3 V. p4 _/ ^- p8 J
  8. 2 D8 ~  L5 ?' s: H5 q
  9. , x, b& Q9 V! n7 y& Y

  10. ; j5 M, r6 K; E) D0 r5 X; H
  11. # 增强锐度) K( y3 t9 h$ V5 [2 l* V0 [' p

  12.   s& E1 n5 H2 l7 m# i4 }1 R
  13. sharpness = ImageEnhance.Sharpness(img)! k2 M1 i8 P9 K0 k/ d/ }2 |/ N- ^

  14. ; O2 o\" b  s! r- z
  15. img = sharpness.enhance(1.5)) j- {& M/ N* g
  16. 6 O( H5 m* K/ i- W! M. t
  17. 8 c: j9 Z8 x. o: ~& h; n
  18. % a! n7 K7 k# n! y7 }
  19. # 显示图片
    0 d& h2 |5 L4 Y& ]9 m2 N. \( M
  20. 0 a! O4 N. g  T/ t( ]1 r, B, [
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance$ l1 p* j7 ]3 h* }# Y. E

  2. % G6 I7 R* @/ J$ Q) x\" Y2 I1 y

  3. : d# J! n/ p2 v

  4. 5 o, ?0 X% X9 ^  v
  5. # 打开图片
    2 z7 B* B\" J4 O8 q1 m1 R

  6. % V* l7 z, n' @( ?4 V
  7. img = Image.open('image.png')
    % V/ F  e- o/ S% g4 E, F9 i: z

  8. ! X/ ]- i* d7 F) N+ t

  9. ! v2 [7 \- c7 B! m3 {- A3 V

  10. 2 z. F7 t% e) V1 c. _7 d
  11. # 增强对比度( @# a) M- H' X/ N

  12. 2 z3 G! W2 j' {  ^\" U7 C. ^
  13. contrast = ImageEnhance.Contrast(img)
    7 K3 Z1 r4 l/ y4 U( l

  14. ! A& _: N& F+ l( H9 }2 H\" \+ A
  15. img = contrast.enhance(1.5); F% A) E2 S/ z
  16. 0 k5 @) U- W7 ^7 |) a5 J; Q
  17. 4 x$ B+ M& U8 P

  18. 3 [/ [8 Y# R7 \8 v+ K7 f7 |
  19. # 显示图片: r+ w; h& p% k& J* A2 z
  20. ) Y8 C2 K/ F3 f
  21. img.show()
复制代码

, W; n, K8 ^! ^$ s8 F
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-15 10:44 , Processed in 1.134970 second(s), 51 queries .

回顶部