QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 09:28 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
核心代码
  1. # 原始文件
    ( `7 Q/ Q  H+ u: _' r$ C4 F
  2. 4 U! }3 T# n3 g) h  P
  3. enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
    % Z\" u+ {( z2 e* M$ K+ G7 U
  4. 2 T\" Y3 }! j2 t( [\" q; [) `
  5. # 增强图片
    ; |& F' Z& G4 r
  6. ' y) a( W9 [. Q( L% [, e6 D
  7. img_enhanced = enhancer.enhance(增强系数float)' [\" k- _5 {2 r\" N  P

  8. 6 c! q- o/ E; R4 k- B
  9. # 输出目标文件
    & M- p6 J% x; e5 P  V# q9 Q4 U5 {
  10. . [+ Z3 A8 K  k7 G' M
  11. img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致; E% a) \  \& ~2 y0 A

& q# h( c  N2 A4 |& Y0 h所需依赖
2 s) K: R0 j2 z: \4 Q5 @+ F0 y# 文件选择框,可以直接输相对路径不引入这个
  1. from tkinter import filedialog
    , i; r2 ^# B1 ~# G; T- u
  2. , v# i9 \8 C! a  d% J+ M! U
  3. # 增强7 c2 x6 F1 n2 M5 K; G: r
  4. , w0 x5 s6 V1 y9 A# P+ ~1 x
  5. from PIL import Image, ImageEnhance
    9 @/ B: p+ D9 h: l& L. U

  6. ; V& t* M; x% J- @
  7. 代码实现
    1 h8 w. k0 R3 D2 t
  8. 0 s, _7 O\" }/ I1 L! l- g- A\" k
  9. from tkinter import filedialog
    / i/ {7 ~) |$ |9 ~6 s/ y$ C

  10. 4 \7 F! K, k' w$ {
  11. from PIL import Image, ImageEnhance
复制代码
  1. def open_file_dialog():
    9 O: y( U6 T7 G  Y8 b3 J, A$ \) d

  2. + G3 P, n+ [7 G) a: N
  3.     file_path = filedialog.askopenfilename()# K5 ]+ w# m- x' l: W/ {

  4. & O* A( T' ]# N
  5.     # 在这里添加代码,处理文件路径; @/ N# |% R9 ?2 ]  k9 ~

  6. ) `2 B( b% E3 Y! |  S
  7.     print("选择的文件路径:", file_path)  w. c9 v* X( i) E4 v5 P1 ?3 ]- o
  8. 4 j1 u% R8 {+ t4 {, {
  9.     return file_path
复制代码
  1. 5 k+ H/ P; E# X' l
  2. # 打开原图像
    2 a' u& G\" q, q# O1 `) c7 y

  3. 1 I5 z9 A8 y7 {8 r4 [+ K
  4. # img = Image.open('image.png')# Q: |2 M; k; y5 I' R) o
  5. % ^\" U7 ~, h\" w
  6. filePath = open_file_dialog(): n% A4 }& V3 a

  7. ; s+ t- I9 w8 \6 U4 U
  8. img = Image.open(filePath)
      N7 \9 V: ^6 o* P& y

  9. 6 C. x8 ?# A7 k2 b: l) Q
  10. # 设置增强因子1 N3 a9 q# X  ?7 C

  11. ' R8 r\" w8 f& I7 K
  12. factor = float(input('请输入增强系数(1.0~99.9):'))
    & x9 _5 U: m, }\" @  I
  13. + u6 e* E/ ~% d! }! w  j

  14. 9 n/ l; l8 F4 C\" j\" G6 Q
  15. - J' P3 s8 B  A- A4 [
  16. enhancer = ImageEnhance.Sharpness(img)# P3 i4 K- s+ @. j

  17. 4 j( \2 e! m  o& q7 S0 e. Y* n
  18. 3 q- a8 O7 x5 H
  19. & J8 m- p! S7 S2 f6 r* a0 Q1 V8 Q
  20. # 增强图片
    1 T% d* U+ r& }- w$ t7 _! H

  21. 2 f4 ~5 ]4 {* M2 o2 P
  22. img_enhanced = enhancer.enhance(factor)
    \" b6 W- s# ~5 o  q  f
  23. 1 B8 @  |  n2 K2 \3 p, |

  24. 0 o7 P8 y' ^. p% S4 r. s

  25. $ |  |, h1 z5 L2 @: S\" y3 @
  26. # 保存增强后的图像, ?1 \+ O1 M. P\" C' L+ Y& R% R
  27. 6 V9 O5 L) B# @* M( s
  28. arr = filePath.split('/')
    . K  j- s9 k  w+ P

  29. & C0 x& y$ X+ z0 z5 m4 F
  30. i=0
    * h7 b6 a7 d\" z\" A  N

  31. 5 r. I1 g% W1 k- r; ?
  32. fileDir=''/ b4 a3 D2 H4 o% u7 ~
  33. # J' W7 B% ^( T+ P& \) l/ P. a# i
  34. len = len(arr), \* O\" |: e3 u# m  I
  35. 5 t/ {- }( ^# w) p  X% `
  36. while i < len-1:2 u- G# H5 W0 c% Z$ Q4 v9 \\" J
  37. 7 p6 j) k6 o; I0 s; N
  38.     fileDir += arr[i]+'/'
    4 `4 m7 m2 W  }- F  r3 {
  39. 9 v/ Y$ Z1 P, i& W% b& y
  40.     i += 10 I# z5 s3 M2 J
  41. 6 j1 @3 W0 Z( M1 @6 w# s
  42. ; @- M2 ?! O: w% z$ p- c

  43. 5 C3 X2 h4 C6 W7 c$ z* h; `1 J- h
  44. img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])! a! U, h- B4 @! j5 v- T
  45. ! [) }# N, u2 x+ O9 {
  46. print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:4 A* r0 k5 f( R9 j

3 {+ [4 W6 ?2 S8 F0 C增强锐度
  1. from PIL import Image, ImageEnhance
    \" |0 P1 i2 D( A! U! n

  2. 7 M( H0 n1 P. W: M\" E7 [! i* g

  3. , W  c$ i* i4 V; n! `4 B0 m3 S0 p

  4. 5 x1 ~( k& _. C# q
  5. # 打开图片
    0 ^# ~; L) z& {
  6. : `8 Z; Y4 t: j0 s, w7 q2 B0 p
  7. img = Image.open('image.png')) y- [7 l! `- L) Q4 \- q% U
  8. 4 ^\" T5 p8 `- s7 e; O
  9. 1 I4 N: u3 v0 H2 n6 F8 ]+ [\" Q

  10. # H$ ?5 B, I$ D- T  l) p
  11. # 增强锐度
    4 ?- o  y4 B! D! j3 Z) A\" Y

  12. \" e/ z( ~3 ~  L1 E4 W( x% G
  13. sharpness = ImageEnhance.Sharpness(img)
    - T1 Y. i9 `/ T2 |# R
  14. - ~7 u( Q! J& b9 x8 h3 k% b4 K! n
  15. img = sharpness.enhance(1.5)- J1 [. n% J6 L\" y6 v

  16. & n+ E$ n0 n% x2 R1 N
  17. ' b9 [: Y: z- G3 n3 E\" p

  18. 3 }! w9 ?: C+ d7 l: M9 e
  19. # 显示图片
    2 a7 T: T\" Y# d: F

  20. \" |5 \: \& k, k' Z0 Z$ H; N1 V
  21. img.show()
复制代码
增强对比度
  1. from PIL import Image, ImageEnhance) [3 \0 u5 |6 D: M
  2. ! l# I  {( \. m- D2 m4 @7 J
  3. 8 [6 o0 Y( X9 E; ]7 W# x* P* J) Z

  4. 9 b2 y' E2 n4 J5 s7 q. [
  5. # 打开图片
    ( X9 U5 d+ a% l  f, x' A1 o
  6. 9 i3 J2 R7 b# B' O* I# @
  7. img = Image.open('image.png')% }& \+ w9 j; J' a4 S
  8.   P  C, p$ _8 k' Y& |. c

  9. 4 z. c\" t/ e' c7 L* t2 u
  10. \" U7 l( u; Y6 L/ L* Z  W4 \
  11. # 增强对比度
    . }4 }+ k5 \* i& U$ A$ G5 j8 g
  12. * T( o* ^+ ^$ U; K
  13. contrast = ImageEnhance.Contrast(img)% Z# v0 Q# a' u$ l; r* `4 j, T, i5 D

  14. 1 m* H! M+ [: e4 U- l
  15. img = contrast.enhance(1.5)
    0 u0 X- K9 \8 J. @5 Q4 U8 \

  16. 7 t# j6 S( U! d
  17. & J1 k7 j- ~, d  h& z% Y0 \5 ~7 i

  18. 5 \$ C, f* W% N7 o, X8 y
  19. # 显示图片
    6 _; m5 c8 R1 F. o9 [

  20. + `( r; S9 x+ ?
  21. img.show()
复制代码
1 O( B( z. m6 ?, O. X) U4 J  m
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-7-10 13:42 , Processed in 0.394759 second(s), 51 queries .

回顶部