QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    , C, y  F1 d& Z5 q( [# g. h+ ^
  2. / J7 z2 e3 I+ i8 a( h$ I
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))+ v1 ~9 x6 i* ~; J- q9 U2 c; V
  4. 0 t0 `* w1 u/ F4 D\" C& d
  5. # 增强图片
    , c: M! C' z\" v  U9 W) `9 x; L+ _5 O

  6. + a9 n' u5 K\" ^0 R  B3 ~4 x# S
  7. img_enhanced = enhancer.enhance(增强系数float)
    : h2 Z- ]& j$ d4 ?7 V. ]
  8. 2 H( A+ o$ d; C7 C
  9. # 输出目标文件6 B- s5 {* |# C. W' w$ Y3 p
  10. 2 o# R- U: d7 y\" @% k. o' E4 j$ t7 q# F
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致7 A3 h# O9 x) I9 R5 Z4 E8 v2 L
0 y3 h$ J" n" u# G$ `
所需依赖- C6 r2 G3 {; X  A) K: ~
# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    + D! R) p  j0 X) ~5 {
  2.   Z) _8 `- b: ?- R. B8 G
  3. # 增强$ E/ V4 q8 f) v- k7 e
  4. $ {# \' x) ]. a) O) z# d3 X
  5. from PIL import Image, ImageEnhance4 B$ N4 L% p4 w+ w5 N

  6. ' ^9 X5 P' F8 y( r& s' J' K6 `
  7. 代码实现- Z# x: N! b5 k

  8. 2 y, i3 {5 |' F# v0 O' G6 e( j1 x
  9. from tkinter import filedialog
    ' q+ h& `3 X4 T; |8 h8 Y
  10. \" d' b# ^\" f) Z$ b
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():  t+ @- q7 u. K* y: ^- A

  2. 0 n- L6 q# O& s& l$ {. T6 w
  3.     file_path = filedialog.askopenfilename()
    . `3 ?: q. f9 Z# S8 D1 l

  4. 8 A( ~* v+ k/ _; b7 i$ v9 B# [/ @  e
  5.     # 在这里添加代码,处理文件路径( @# {& |# Z% n1 X+ Y
  6. 8 X# L& Y* c8 P7 g* {% Z. E\" V
  7.     print("选择的文件路径:", file_path): ^$ o2 u& a  Q/ @3 L; P6 g' z) T) x
  8. * g) T& e0 M' {
  9.     return file_path
复制代码

  1. $ B: [4 a/ S' M7 f' `
  2. # 打开原图像
    9 J4 r- k. k/ X
  3. # @5 _8 S7 f. j9 I5 ]% n& T
  4. # img = Image.open('image.png')( \4 C6 q/ Y. m

  5. , X! _, @9 L, V) M/ _
  6. filePath = open_file_dialog(), N' k# C\" R/ T0 U/ Z
  7. 2 W- K) M7 r9 q+ G7 W1 d/ S
  8. img = Image.open(filePath). ~3 ~$ p7 t/ t
  9. * W3 t1 _1 Y+ u
  10. # 设置增强因子
    % X0 I: }7 u4 e\" _

  11. / z# \$ |' K5 B9 y, ^
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    ( @$ R- @1 \5 K; U3 ?! f

  13. . U, o+ Q' Z  d: |+ }+ O
  14. 3 f# C' _\" a, L  v

  15. 3 u\" \$ W9 g( [1 W, c0 s5 V1 A3 L! s' v
  16. enhancer = ImageEnhance.Sharpness(img)2 b0 s+ |/ J' S. n; V0 t& r
  17. $ x# z/ v8 j9 x( `9 p8 f

  18. ; j; n$ H& I4 f

  19. 4 l! u0 {7 N1 z' N) Q$ K
  20. # 增强图片( d. M$ L; ]) Z7 a) s

  21. # _% A# y( ]$ e\" ~! c3 e& J7 `
  22. img_enhanced = enhancer.enhance(factor): X. q. b! {! p) W- N1 h
  23. # J3 |. K  x# v- W) x% o

  24. + r( b$ q, q, w

  25. 6 Z1 J6 h# i: O( d+ N
  26. # 保存增强后的图像
    2 w, _+ I$ J5 s: U) K

  27. ; L; j( ~4 s* C' A+ S+ B
  28. arr = filePath.split('/')( h8 W2 B- @% x& p) a( B

  29. ( ^8 l. f7 |$ B, Z2 W
  30. i=0( k6 k  w, S5 u- G4 b% ?, ?: m4 J

  31. 6 D% e. Y) I4 N0 E, {8 P) R
  32. fileDir='': U0 K5 F  [% L' F5 O' L

  33. 3 b2 r; S. `: l2 V  ]3 c
  34. len = len(arr)
      g\" ?( Z* g( \( E

  35. 8 X+ P0 B% O7 O* ^6 S  u4 m
  36. while i < len-1:1 [5 V' {+ k- X8 o( d\" _! v. _

  37. % O: ]. J- L3 ^
  38.     fileDir += arr[i]+'/'
    / H0 e( C  F' P9 u: t

  39.   S+ }7 c: S7 x! T6 m5 U7 Y  b' G
  40.     i += 1+ x- a. b% _- d/ B$ G! K  e7 F
  41. 1 c( `\" _8 X1 b+ a, m. S
  42. # L: q4 l7 P( _5 T$ [1 v5 M: Z

  43. ( C; {$ f% M$ A9 V& @; }4 |$ E
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])( v- \. E) ?2 {$ b) A

  45. ; C) Y9 e# ]$ e2 E3 w+ F3 V
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
( B' j, ?$ w$ u! y% d  m# p& U7 R% J. g8 k; J6 p2 q9 c2 W
增强锐度
  1. from PIL import Image, ImageEnhance
    % z; x- ^, J# ]3 K
  2. - U1 u9 F* [$ R2 ?

  3. ! o  s* b( ^4 o. n
  4. - `7 X6 L. k( P% b( g
  5. # 打开图片
      O  W5 u: g8 o8 K' A6 g

  6. / d* m4 M, H\" R
  7. img = Image.open('image.png')
    \" {( \\" y: J8 ?. ]# A& n- l\" `/ W
  8. ( r, l. I, _2 e, X! Y6 p

  9. * b8 W; A  ^( J8 K% S) ]/ L5 r

  10. - G  a% v. f0 J\" N! H1 L) h\" `: I
  11. # 增强锐度
    : a2 l/ h& q; `& m

  12. ! t* d  U9 X$ q8 b0 i/ j  y
  13. sharpness = ImageEnhance.Sharpness(img)
    4 R( b9 G5 i5 K$ ]

  14. 3 S( i# M6 \/ m' A7 t5 m% ~! r6 K
  15. img = sharpness.enhance(1.5)
    0 O* d\" o4 t  K2 Z+ h: j+ Z' D\" i0 j3 ]2 M
  16. ( E7 f; f2 Z& a
  17. 2 x& L5 h$ b, A, k; B. R

  18. 0 D. Z$ U\" n, a+ w1 H
  19. # 显示图片, z5 r- z1 D* I0 w9 X% n

  20. 7 N- v; x( X+ K; M+ Z7 U/ L# d- Z
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance7 T8 o) T9 _- @0 W5 A! z9 {  m
  2. 9 u5 c9 s# p! z; a; u( L
  3. * D2 N4 Q! O\" N( q  b/ z2 b2 |

  4. ' D3 c4 `8 s) J, u+ ?6 d: m0 R\" d
  5. # 打开图片
    2 O5 F% c/ Y3 t0 ?& Y, _

  6. \" i  r* D' Q: J0 a9 N3 ]
  7. img = Image.open('image.png')! T\" X( r4 s3 F3 i. A0 C  ?
  8. 2 ?, i8 z# d4 H; m% f& m4 h( e\" N

  9. ) k. ]/ h7 C* ^2 q2 N
  10.   I! Q6 H0 [: ]3 s* e1 U. V6 j
  11. # 增强对比度
    3 _* f, k6 M. `3 j! p/ P

  12. $ d  ~6 V; N& F5 P( u; N% q
  13. contrast = ImageEnhance.Contrast(img)4 `9 g; _: f6 c; R$ G9 E- ^

  14. 8 L# H) r( V8 g0 [4 k' X! q
  15. img = contrast.enhance(1.5)
    - [1 x3 O. Z! Q  l2 _1 T
  16. 3 ^/ o  p; e$ @
  17. 7 C- S' f, o6 b3 Y

  18. + k) m7 Y( e: {& p) F- V
  19. # 显示图片( U$ Y0 c% B0 _1 F4 {1 r. W

  20. 0 Q' v3 M3 l7 m: F: o0 T) ]
  21. img.show()
复制代码
7 S% G, I  N  }5 A7 w
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-4-10 16:48 , Processed in 1.072833 second(s), 51 queries .

回顶部