- 在线时间
- 482 小时
- 最后登录
- 2026-9-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7953 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2978
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1183
- 主题
- 1198
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
核心代码- # 原始文件
+ v4 z5 k d6 t% E8 h/ j
( h( ]9 b; g\" H% J# X% `* r, u, i- enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))7 k1 Q9 D7 T3 Q/ B( e
. U7 D6 I) |0 B& R- d* E- # 增强图片
/ q7 }0 e$ D\" x\" a' w
/ p& I9 ?1 n* R3 ?- img_enhanced = enhancer.enhance(增强系数float)4 P. g. E3 b7 H5 A% z! a9 e
\" K: N( Q( w& T' W2 o# E- # 输出目标文件) R6 z% Z) S/ G, Z+ l
5 @0 g3 h2 H7 X0 W- img_enhanced.save('文件名.png')
复制代码 注意,输入输出文件格式必须一致
9 L3 Y* x& D* [; T: Z/ Z4 S7 S0 U" v. ?8 g6 j+ |
所需依赖8 y' S$ w0 d' v% s0 `
# 文件选择框,可以直接输相对路径不引入这个- from tkinter import filedialog& z* _\" M: W: h _9 w
- . e8 Q3 Y; B0 O6 @% L' S- W% G+ m
- # 增强
1 z6 E' I) `\" Z( _- J; L) k$ R
, C3 D ~ t& a8 ~- from PIL import Image, ImageEnhance/ I2 v& ]* I) V& d8 i
6 m7 x6 Y3 ]- h- 代码实现- M1 I, a4 A2 r1 l. L
& G; W+ x* q3 M- j% M+ @- from tkinter import filedialog
+ n; J: D! {6 y0 s; C1 T
6 Q6 h+ K1 v# P% E5 s- @) t- E- from PIL import Image, ImageEnhance
复制代码- def open_file_dialog():! F4 ~+ I$ O1 s+ F
8 H, c& M6 H) H- file_path = filedialog.askopenfilename()
6 F: R8 ^1 A* l) a
( C* i. y6 g, u( V' A- # 在这里添加代码,处理文件路径* n4 N0 D1 l; b0 T/ L; H, z2 B
\" g, o+ }' F\" k8 V! U- print("选择的文件路径:", file_path)8 R6 V; j8 D6 d! k: n$ z
- 1 a2 F3 R* A% }# c( f* f) z
- return file_path
复制代码
7 p! v9 d1 D: J- # 打开原图像
9 K2 O1 U) e5 |# B( H$ B, O: u- q
- ]2 ~\" `\" N v$ K( l4 J- # img = Image.open('image.png')
& R: j% F2 R4 l4 F8 D. z! U\" Q - 4 I5 x6 `& x9 u' `% k/ W4 o* G; G r
- filePath = open_file_dialog()7 R+ ~ `# \& B3 r3 O5 y2 t
- 7 e* O0 x3 Z3 U7 Y) T: U
- img = Image.open(filePath)
* [# i5 ?. J4 @% u1 _ T\" N - ) Y+ k4 d# i3 m& u9 O* U5 H) a0 D
- # 设置增强因子
( \* ]6 Z0 G& n) K
( n5 a2 x7 ?* ]9 U5 g- factor = float(input('请输入增强系数(1.0~99.9):'))5 \' s; l/ p/ @+ w6 B' {
: y$ a) L# v7 b) m- 0 i+ W R3 [ N- }+ G
: a/ J, Y- [' G6 P: G- enhancer = ImageEnhance.Sharpness(img)- O, g5 ^! L, `% c8 A\" \
4 T4 v# ^\" s% M7 F5 r. K- - n, Z. }& v0 B6 n' C5 B: i
: J# W! [6 ~+ a6 F; H- # 增强图片
$ j) E& c3 {4 J5 ^1 C - 9 r9 ^8 b3 c. X0 U3 M7 R' D8 n5 G
- img_enhanced = enhancer.enhance(factor)! ^% v\" J7 N3 u3 ]& _3 ?, N
4 o1 p: u6 }; q7 s! h; k- 1 U' L* T( h/ [; x5 W$ u8 J E# D1 U
+ r& j4 ]/ {+ R/ [- # 保存增强后的图像
8 `3 C! \; Y3 Q, `2 @- |* P - 6 t0 y/ W2 d7 l8 t) e2 |5 x6 i, Y
- arr = filePath.split('/')1 r5 ?1 g6 R& C2 q; l
- 0 w5 s8 l4 m1 W0 H
- i=0
A4 r S# F0 M0 x2 |
! T! i\" K2 d% t; r- H* B7 i- fileDir=''
. C\" }4 ?6 h; l0 _5 h! t v - 8 @4 E- X\" w9 X& f& ^
- len = len(arr)
( I7 l6 ?- g, b, ?/ N! O - 3 ?. Z+ f7 L+ ?5 Q
- while i < len-1:, ~( n7 Z. U% u; k V8 B
- ! l$ N3 }, b; Y$ I9 l
- fileDir += arr[i]+'/'4 v V- F- R* g4 s. a0 m
- + W4 L: D- S+ G: ?9 e9 x' e. M
- i += 1
$ n X4 s' f2 _& w# e9 R, c7 T3 d$ ^ - # Z, ?9 h2 U: | U
; J% R+ O4 a\" u
, h0 g7 z L! p$ |6 n6 Y- img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1]); o, ?+ p4 v2 a% {: K\" V
G* Y5 _; I! @+ @7 m% T- print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码 应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
) _3 z; X. [. J0 \4 s
2 b! w8 ^( N- g8 G- X增强锐度- from PIL import Image, ImageEnhance
' u: O& D5 `6 u2 z1 K. r - & [9 {( y* X. L' M/ p. p( p% t
- * i* r: D. n. Z' j
4 O& x5 z, J6 `2 l. o\" z- # 打开图片
9 D$ Z& {# P6 a8 ]6 k- Y
, U' w! F4 P: ~4 r- img = Image.open('image.png')& ~; R, s! u2 J# {6 d# j% {3 ~
; S' ^9 ^$ b% R5 C/ a, d
8 v; [/ M( ]\" x, e7 p7 Q- % @7 S7 n' w2 j
- # 增强锐度3 Z/ r# k5 L' }+ F
- P) _( a& `! N* l
- sharpness = ImageEnhance.Sharpness(img)' O0 ~6 b& ^' u. Q# W
$ N2 Y, D. `+ z0 }, q- img = sharpness.enhance(1.5)
1 j1 u$ s& m, W+ B+ E6 Q# i; e - # N& t6 Z& e- s# O! B ]
- 9 v8 \6 h: [\" L' o2 Q
- ) _: Y4 X\" u6 e( a+ R: S
- # 显示图片 s/ g/ R( A- j5 `/ {1 p& `
- 2 e( L5 V v) D9 s2 l; B
- img.show()
复制代码 增强对比度- from PIL import Image, ImageEnhance
6 t3 a0 L\" I q1 a; O+ R2 B - 7 u4 u/ m6 a0 [( Y: _
- ; P+ z\" P$ s( x2 T) L! S/ }9 L S
- $ p( v L- U1 C3 @: I' I# |; e% q
- # 打开图片
9 h& B& J3 C3 t: }$ `0 m) J
) n0 l5 j9 f3 Z4 T- img = Image.open('image.png')
- C$ l# J7 R# \0 F- a. ~! h
+ h7 G' `3 p* z8 _2 f$ D! |$ \; T
\" M* y: U1 J5 j6 K8 l
( R) A, O+ I! {8 j- # 增强对比度9 t+ _( _6 g! u$ h* M1 Z
- \" ~2 A, ]1 ]( \% c2 g6 o A
- contrast = ImageEnhance.Contrast(img)
- ^6 ^ R8 ]- U. G - + W! N+ L- q9 E
- img = contrast.enhance(1.5)
. T! v: Y7 W; V4 c- C( y
. W% ^4 |: `+ Z
+ ]# ^' e7 o3 k\" f1 u6 I2 \4 n, h- # c5 o- E4 {3 j2 G2 ?
- # 显示图片- c8 r- U$ E) f+ E6 l5 [& S
- 9 ?0 \8 L0 s# T8 b5 M8 ~
- img.show()
复制代码 , ~# n. M( b" D2 J: Z" F4 H
|
zan
|