QQ登录

只需要一步,快速开始

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

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

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    8 G6 f, p  h+ K: I, W: ?8 n

  2. 6 i/ j1 E0 S# L3 S' C& ^\" k
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    6 B- b3 V. c. }( c  b% f, P
  4. $ q) e8 F# W9 K
  5. # 增强图片9 h+ g8 t# z3 f  K
  6. % h8 ?4 l' B+ J1 r\" J% g1 N% y
  7. img_enhanced = enhancer.enhance(增强系数float); O: U4 k' ~+ X; ]& I1 h: U
  8. ! [( {) Q8 v\" g% r
  9. # 输出目标文件
    \" E+ ^/ h! p\" c, d' R/ m

  10. & Q1 z8 x  o5 H5 `9 E4 ]1 ]  n, P8 w  Q
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
$ c4 {; H, H; Y2 j6 F3 u1 S
& N  \# g) n! ]6 z9 o所需依赖2 m* \& u/ W/ _5 Y' ]7 e- J
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog! W6 h\" l3 `7 S5 s0 w7 D5 H

  2. 3 H) ^) L2 B5 z( E
  3. # 增强* ^% D+ Z6 ?% V% l/ [

  4. % f1 D. {, g8 D/ U# y8 n+ ~/ {* s
  5. from PIL import Image, ImageEnhance+ m0 ~7 V  b( a) y
  6. . E6 a. [* Y& Q! }5 H3 O
  7. 代码实现
    \" ]/ }( Y( q+ P% [

  8. 8 y% k\" k0 M' E- X, Y2 K
  9. from tkinter import filedialog
    1 G* b. {; o1 n2 w3 j- g2 k

  10. ) m0 L% b) J3 p; h
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    9 o3 u, e% q+ u( E- d' {6 [
  2. ) I2 a5 {5 @7 P1 e
  3.     file_path = filedialog.askopenfilename()9 @, Y( m0 Z' A# L' B6 h- h
  4. : q' v2 M* j. V. e  M8 c
  5.     # 在这里添加代码,处理文件路径, O4 ~7 {) {. _% l4 M) M+ o

  6.   x0 Z6 F/ i3 g9 q6 {\" C$ H) r
  7.     print("选择的文件路径:", file_path)! j* g# M+ ]# e$ e! Z0 i
  8. + m\" `1 D$ o/ w& @
  9.     return file_path
复制代码
  1. 6 R2 s3 I0 o+ L3 j2 ^
  2. # 打开原图像
    7 W% [\" J( Y5 Y7 R  y4 W- O

  3. & I( s5 u# w4 R5 M3 ]( X. F/ ~: U
  4. # img = Image.open('image.png')7 L4 ?1 W/ X9 E* y/ _! n4 G

  5. * O\" w1 |# U1 l3 s7 L
  6. filePath = open_file_dialog()
    3 a# O- N) j! `& _' S\" X

  7. ! T6 b& G& Y+ G' J  J! ?) }
  8. img = Image.open(filePath)- S* @* ~) D' ?0 y2 S/ x. H8 G

  9. # ~0 I% n! `4 F2 N4 R! R4 f
  10. # 设置增强因子
    6 s; W  F\" }, ]. V! C- E# z: ~

  11. ' h+ v' w3 ~% C' z( g8 i4 f6 q
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    6 v6 ?; ~, s$ l$ R( B( K# r\" k

  13. / d8 k2 U; H) k  Z, e

  14. 7 c' |9 a# h2 v. t\" H

  15.   o. w9 o. y0 v. T% S( N! B: t
  16. enhancer = ImageEnhance.Sharpness(img)
    . i' Y) S7 K: b: J; }4 H
  17. % g, h& S/ b) m: d: v3 _

  18. + a/ Y% K8 h! M& y6 z4 ^* ]4 t9 f

  19. 5 h% n) C\" `2 \6 S/ D
  20. # 增强图片0 V$ h( d8 ~- J- H

  21. 0 a  p8 j# J( @* g
  22. img_enhanced = enhancer.enhance(factor)
    2 C2 E% Y3 a3 `1 ]' ~
  23. 0 C' H/ x7 }: N' \3 s$ N

  24. / ^5 l, Z+ i  J( t' ?
  25. 1 F' ?# X% v7 c  z3 m
  26. # 保存增强后的图像
    3 u  D+ z; c9 s, s! ~5 h

  27. ' m' S7 n; C0 Y* z5 S2 U
  28. arr = filePath.split('/')9 `2 y+ u+ Q/ p6 A& d2 B. F- V

  29. + h7 B. j# @5 h) }
  30. i=0
    9 [6 Y\" B3 L  F% M: S4 b& f

  31. 3 |' \4 `2 d4 \8 G\" N2 f1 K+ K/ K
  32. fileDir=''\" h2 x9 {8 J; G/ f9 d2 a

  33. ( ~- `* D2 a* ^\" h- i
  34. len = len(arr)
    ; @2 y\" }6 \3 E) p1 g

  35.   L. r  s: R7 y9 g1 ]
  36. while i < len-1:
    7 \3 T$ j+ E# a2 ?. E

  37. % t* V+ z) K4 {0 J
  38.     fileDir += arr[i]+'/'
    ; D# [8 l& J/ ~. z) v

  39. ; k8 {. h: h0 O9 ]
  40.     i += 1
    ) p6 G2 A. F$ K# Q

  41. ( b1 D4 E; ?7 }1 D' A# U
  42. $ v% A( K, x5 l! I$ S

  43.   N\" g3 Y5 x  O% M# }
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
    5 a) R' T6 m7 q
  45. - ]$ W# S2 Y( O
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
* i6 L1 L2 g# I! W/ _5 }' Z
# F  j, [5 w# L. x增强锐度
  1. from PIL import Image, ImageEnhance; Y5 U) Y% t: A% ]9 o
  2. , O- j; I8 P9 _/ R; N5 J

  3. 2 Q+ J6 ?7 }* I+ S) a
  4. 2 ]! e: r* T- d7 X) S2 s0 s& c
  5. # 打开图片( w8 F- F  b9 {7 m% i1 s+ p! ^

  6. 0 X9 X/ R$ v- J7 u
  7. img = Image.open('image.png')* [6 f0 R# b  g1 H
  8. , z# d* T& A3 u) l
  9. ) ~9 l* O1 d8 ~- z: \; P

  10. / R8 `) S8 D/ F: f) z' i# F
  11. # 增强锐度# H: G) z! e; O7 l8 Q, l& W5 B2 L

  12. 5 o2 y1 n) Z) @
  13. sharpness = ImageEnhance.Sharpness(img)' }* o5 h1 O5 v0 ^* X' S8 C( e

  14. # Z( ?8 C6 W9 e( @. Z. A) v
  15. img = sharpness.enhance(1.5)
    % S# J7 z+ g6 W# i2 _5 D

  16.   b\" I! t5 @$ t
  17. ' n) Y$ P9 S/ R; ~. N! K3 B( P
  18. 3 I$ F: V8 u6 r
  19. # 显示图片
    # _) G0 a$ }/ h- x9 G

  20. * L% n. V, u$ n+ I' ~0 x
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance6 K& F4 X\" c( Q) d1 L; Z$ I% ^  o, ?  I

  2. # M4 Z  H3 w\" Y3 Y4 U

  3. 7 F5 F1 |& i! t/ q

  4. 3 f# g* K: y# q1 w  ^
  5. # 打开图片
    1 V' g8 |5 p$ V\" _- I  C* ?3 M# J

  6. ) ^) v$ H9 T( H' U5 o$ n
  7. img = Image.open('image.png')) j, k0 I* k  n; O

  8. ' n+ X1 y$ G4 ]: V  O( c  ~0 `/ i
  9. . p& l9 y- F# r# I' r& T- p
  10.   M' j. v+ G0 b; Z
  11. # 增强对比度: Y7 p( Q( S/ v5 C; |. k

  12. + R4 N. V! ~3 Q( e3 V' q\" o
  13. contrast = ImageEnhance.Contrast(img)
    ; b( T, E0 u$ H) {5 B
  14. , Y0 _8 [7 j' Y! l, ?+ A3 q
  15. img = contrast.enhance(1.5)$ r6 J\" [' r/ @1 G( w9 N& ~

  16. ; u) k2 D: f* Z% K; y
  17. $ _& J4 v# K# I6 n  V0 K

  18. 8 S- e: g2 O) ], |
  19. # 显示图片- X0 H4 f\" \! s7 e9 p% O, ^( y

  20.   k+ u6 N  C4 x% v% A
  21. img.show()
复制代码

7 s% l$ G0 m' a
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-5-26 03:21 , Processed in 0.426559 second(s), 50 queries .

回顶部