 |

01.11.2021, 15:06
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Привет, как удалить белый фон с 20000 картинок?
Этот код заменяет изображение на серый квадрат
Python:
Код:
from
PIL
import
Image
def
convertImage
(
)
:
img
=
Image
.
open
(
"./image.png"
)
img
=
img
.
convert
(
"RGBA"
)
datas
=
img
.
getdata
(
)
newData
=
[
]
for
items
in
datas
:
if
item
[
0
]
==
255
and
item
[
1
]
==
255
and
item
[
2
]
==
255
:
newData
.
append
(
(
255
,
255
,
255
,
0
)
)
else
:
newData
.
append
(
item
)
img
.
putdata
(
newData
)
img
.
save
(
"./New.png"
,
"PNG"
)
print
(
"Successful"
)
convertImage
(
)
|
|
|

01.11.2021, 18:43
|
|
Познавший АНТИЧАТ
Регистрация: 03.04.2020
Сообщений: 1,437
С нами:
3217034
Репутация:
138
|
|
не знаю как тебе будет полезно, но в фотошопе автоматом может делать такое вроде
|
|
|

01.11.2021, 19:07
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Нашел способ. Немного грузит систему, но работает более менее нормально
код:
Python:
Код:
import
cv2
import
numpy
as
np
import
imghdr
import
os
def
removeBackground
(
file
,
savePath
)
:
try
:
img
=
cv2
.
imread
(
file
)
gray
=
cv2
.
cvtColor
(
img
,
cv2
.
COLOR_BGR2GRAY
)
mask
=
cv2
.
threshold
(
gray
,
250
,
255
,
cv2
.
THRESH_BINARY
)
[
1
]
mask
=
255
-
mask
kernel
=
np
.
ones
(
(
3
,
3
)
,
np
.
uint8
)
mask
=
cv2
.
morphologyEx
(
mask
,
cv2
.
MORPH_OPEN
,
kernel
)
mask
=
cv2
.
morphologyEx
(
mask
,
cv2
.
MORPH_CLOSE
,
kernel
)
mask
=
cv2
.
GaussianBlur
(
mask
,
(
0
,
0
)
,
sigmaX
=
2
,
sigmaY
=
2
,
borderType
=
cv2
.
BORDER_DEFAULT
)
mask
=
(
2
*
(
mask
.
astype
(
np
.
float32
)
)
-
255.0
)
.
clip
(
0
,
255
)
.
astype
(
np
.
uint8
)
result
=
img
.
copy
(
)
result
=
cv2
.
cvtColor
(
result
,
cv2
.
COLOR_BGR2BGRA
)
result
[
:
,
:
,
3
]
=
mask
cv2
.
imwrite
(
savePath
,
result
)
cv2
.
waitKey
(
0
)
cv2
.
destroyAllWindows
(
)
except
:
open
(
savePath
,
'wb'
)
.
write
(
file
)
saveTo
=
'noBgImages'
for
i
in
range
(
1
,
17500
)
:
file
=
str
(
i
)
+
'.png'
if
os
.
path
.
isfile
(
file
)
:
if
imghdr
.
what
(
file
)
==
'png'
or
imghdr
.
what
(
file
)
==
'jpeg'
:
print
(
f'{i}: Removing bg from{file}, saving to{saveTo}\\{file}'
)
removeBackground
(
file
,
saveTo
+
'\\'
+
file
)
else
:
print
(
f'{i}[SKIP] NOT A PNG ({imghdr.what(file)}).{file}'
)
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|