python - 如何在pygame中无背景的blit图像
问题描述
我想在 pygame 表面上只对这个图像的绿色三角形进行 blit。
我的代码:
import pygame
win = pygame.display.set_mode((800,800))
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
win.fill((255,255,255))
Image = pygame.image.load('sample.jpg').convert()
Image.set_colorkey((0,0,0))
win.blit(Image,(80,80))
pygame.display.update()
pygame.quit()
当我运行该代码时,它会像这样 blit 图像。
我怎样才能做到这一点?
解决方案
不幸的是,pygame 在颜色过滤方面做得不好。相反,您可以尝试对具有内置 alpha 透明度的 png 图像进行 blit,您可以使用 GIMP 或 Photoshop 等工具来制作透明图像。但是如果你有很多图像并且你想自动完成这个过程,你可以使用 opencv 无缝过滤颜色;这是一个很好的教程:
https://realpython.com/python-opencv-color-spaces/
过滤指定颜色后,还可以使用形态学运算来达到更好的效果: https ://docs.opencv.org/trunk/d9/d61/tutorial_py_morphological_ops.html