数学建模社区-数学中国
标题:
三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
[打印本页]
作者:
2744557306
时间:
2024-3-21 09:28
标题:
三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
核心代码
# 原始文件
2 V( f) B, e7 m* k ?9 i. \
9 U" w6 b5 [% b3 q1 Y; b: `) ^, Y
enhancer = ImageEnhance.Sharpness(Image.open('文件路径.png'))
2 {" \" |; R% @1 I5 k+ h
5 t, ?( z4 t1 w4 ?
# 增强图片
8 n, E# J% i D2 _3 m, g8 T
# C+ S) c0 \$ b3 v% [8 M
img_enhanced = enhancer.enhance(增强系数float)
! N2 C. Y- O W: i! ^. _) R# b+ U
/ i- D6 P7 p* X$ A% [% ^
# 输出目标文件
) I% Z. z* T! K( D: q
7 f- K$ i1 T; g4 G7 H I
img_enhanced.save('文件名.png')
复制代码
注意,输入输出文件格式必须一致
3 F) N8 R# P F+ W, t
9 a0 K3 E) T/ s3 M) d
所需依赖
: X0 T' i/ _, R( f
# 文件选择框,可以直接输相对路径不引入这个
from tkinter import filedialog
- i& t* S0 p# }8 C
) c" [7 \) N: F5 j; [7 l
# 增强
' t5 B6 A7 J8 H5 i
8 G4 _" w( q% Y' Y, A* }" S
from PIL import Image, ImageEnhance
6 |! i% d" r' d! o# A8 c
* Q! ^0 Z* q$ Z, P% t8 i( c" A. @8 s7 ]
代码实现
' K$ k- S" A# d& L2 T! a
% C% S2 Q0 u2 W; z+ |1 W
from tkinter import filedialog
4 n. ^9 {# R1 w Z9 a
7 p6 j" d, D, R% \% c
from PIL import Image, ImageEnhance
复制代码
def open_file_dialog():
! n$ J: |$ g/ B0 }- x) I% X
" p Q' k9 }7 Z$ a% L' D
file_path = filedialog.askopenfilename()
7 f& a. C j0 `3 ^4 X
9 F5 ]9 L( q6 k% O) y# G: I
# 在这里添加代码,处理文件路径
" Q" P; c6 c/ v: u. c! O
% b8 V3 G( I+ o: I
print("选择的文件路径:", file_path)
% m+ D, C8 [4 ~6 Z- Y( H
5 V6 V# ]" D5 e Q/ u2 ^
return file_path
复制代码
( U. I g! W1 L. x; |$ Y
# 打开原图像
: q' `0 W7 ^" V2 A( q
& R+ H- U B8 k$ m& m- b0 i
# img = Image.open('image.png')
( r0 C! P) w. Z3 R
; [+ W# j: v& [& ?) G9 ?
filePath = open_file_dialog()
6 @( C" l z* H
8 b( P" g h* J! N& f3 S9 u8 z7 T
img = Image.open(filePath)
6 @1 N9 p2 a9 _$ y4 Z1 U. B2 d6 k- s7 S
5 t8 J8 i" B5 p$ A; M* O) C6 ~
# 设置增强因子
* n! K4 ]! b, }$ g/ U2 K( \
/ f4 e$ u5 A3 B7 K4 O
factor = float(input('请输入增强系数(1.0~99.9):'))
2 R* Y9 r4 d) _" d/ a
: s( ^, P1 P' d; a
! ^9 }6 H, Q- u4 {* ^$ ?9 ?
- r' E0 C# M4 _6 P5 |7 M
enhancer = ImageEnhance.Sharpness(img)
- |' I7 i/ ^* H6 t: I( y
# o! t4 b5 A' U" q* H: b0 C8 {) j
7 z$ x% Y3 Q5 ?" _' v% z
' k3 W3 T3 u }1 D6 l' T
# 增强图片
9 i* N0 ^; x# D6 I% z: b, J
" ?6 f0 F; M2 f& G% X: F9 k
img_enhanced = enhancer.enhance(factor)
* `7 {' x6 C$ `, ^' P
5 x6 R# r5 U. w0 ? D t
9 y( R# n! o: O) X+ Q9 V
( }* @! u% Q! x
# 保存增强后的图像
+ E( _' v7 y0 r( Q, U
: W* Q4 n q+ }
arr = filePath.split('/')
v. U4 M* p' C# g- E
4 C4 m( l! F/ `1 ~1 A2 y
i=0
3 j& v, G4 d$ M# b( K
7 l+ Z! k; S3 F: A) ^
fileDir=''
# T+ @3 K0 j0 h0 R
2 t) v0 s9 ~6 M
len = len(arr)
) m7 r8 A0 C, x8 v6 ^5 i
: ?; `# f( c' `! B# |/ Q% a. U% L
while i < len-1:
; r8 G9 s( W) L4 [0 Y) I% \! U
( {: a9 z: h2 V5 o! P3 B
fileDir += arr[i]+'/'
0 n7 O# N7 D. |3 E+ m) G0 H. T
b t. B$ Y, B" K" O1 i
i += 1
# |# {+ g) E6 L8 `( d3 @
" u# |# G* Q$ n; B* O
c. l; }4 |) q$ x' F; Y/ I
) V3 |3 _* B$ z, S# m, O" R, k1 O6 |
img_enhanced.save(fileDir+'output'+factor.__str__()+arr[len-1])
+ e" w8 [( k% l1 ]/ a1 o6 M) }& _
# N0 ^2 T$ Y+ ^* H7 h$ _/ [/ F8 \& F
print('输出文件为:'+fileDir+'output'+factor.__str__()+arr[len-1])
复制代码
应用层面的话复制上面代码直接执行即可,唠叨两句讲讲我的实现思路:open_file_dialog()函数使用 tkinter 实现文件获取拿到文件名,用于识别需要修复的image;然后使用 PIL 的增强功能生成好画质修复后的图片;路径拼接确定输出路径和文件名为原路径下的output+原文件名,下面附上PIL的另外两个基础功能,如果有提升锐度和对比度的需求也可以自行改写相关代码:
3 B$ E4 z. Q7 u6 W
F- i0 N! m7 E. Z t# s3 [
增强锐度
from PIL import Image, ImageEnhance
/ Z& U) F! O# C+ q$ V
2 K7 S2 a: c9 }8 Q! w
# Z! T" W& y% c0 b* ]6 _2 N
2 N/ Q0 n1 o9 k8 `1 x
# 打开图片
" A; R2 L+ C. P& J! f
6 e+ h& Z8 j* e: i5 o+ h* U
img = Image.open('image.png')
# v( Y0 c" [& [
4 h0 e3 x) M8 T; z0 V
4 r; ~% y: d7 H$ i
' `. X4 O' w( n; |+ \4 h* i
# 增强锐度
. _% n* y# E+ F
* I$ W) R8 n- G8 w
sharpness = ImageEnhance.Sharpness(img)
) d; j' _# J, k0 h& T
( b# W; ?: C9 ^: T7 i" ~4 m
img = sharpness.enhance(1.5)
6 v7 b4 H' m: B- G
5 e3 T7 x H) [' m$ T* u" l4 n/ F
5 g& b' H% e$ u
! p% X3 n, f+ C$ M$ N
# 显示图片
: d0 w2 q2 b" V* P% S9 q
2 @; K6 `1 X( U
img.show()
复制代码
增强对比度
from PIL import Image, ImageEnhance
& z$ G9 w1 ?6 O- h4 t( K) b! r
7 M! L! e2 N U) J
" q+ y. n9 @% w! g9 S4 S
0 x/ D8 Y: G) F& |) l1 U
# 打开图片
* D9 d/ u! G8 K2 s& [
$ h9 b* I* V, R( P
img = Image.open('image.png')
6 q0 u. k; X2 h# [" f
2 |9 p y3 p# z `+ T3 Y) T
. M% i* m8 L8 B: u) w$ Y8 X0 @
w+ m* b, s$ j5 Z& T8 V8 O! s. v$ t
# 增强对比度
" y( @; q; h/ G* B2 `
" l \( _$ @* k" E1 y9 Q
contrast = ImageEnhance.Contrast(img)
" `0 o, C& j: h0 W. _
! J& v# R8 a! ~! G0 ?3 |, U
img = contrast.enhance(1.5)
6 E" ~% [ p( I: N$ q9 d1 t" I
" F/ `; q0 R" g! o+ O) g
k7 f* @* t; P# i
Z# h I- C6 F* W8 q* \. j
# 显示图片
" O' V9 R6 A* L9 p, I' A# d
7 i# t, Z/ |2 p0 I d
img.show()
复制代码
) f3 C5 J+ [4 p( I: v
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5