为了账号安全,请及时绑定邮箱和手机立即绑定

Python(pygame):获取图像颜色信息?

Python(pygame):获取图像颜色信息?

慕莱坞森 2021-03-12 14:10:27
我的最终目标是在图像中找到一种颜色(在这种情况下为白色),然后将其替换为另一种颜色(根据特定情况)。因此,随着特定变量的变化,白色将替换为特定的颜色。但是,要到达那里,我目前只是在玩图像(使用教程..etc)。我正在尝试使用以下代码来打印图像的调色板。我的理解是颜色是代表RGB的3个整数的“元组”。0 =最暗,255 =白色。因此,我正在测试的图像是黑白图像。我期望像“(0,0,0),(255,255,255)”之类的东西。因此,我想出了办法,可以编写代码用适当的颜色替换“(255,255,255)”。我提到了最终目标,因为我非常了解我的方法可能不是最好的方法,也许有人可以通过更好的方法来解决这个问题。如果没有,我至少希望能够打印一个引用图像包含的颜色的字符串。我在此站点上发现了“ NOFRAME”,这是一个很好的建议,因为我实际上并不是在“使用”图像/图形,而只是使用它们的属性。image1=r"C:\Python27\Lib\site-packages\pygame\examples\data\image1.jpg"image2=r"C:\Python27\Lib\site-packages\pygame\examples\data\image2.png"import pygame, sysfrom pygame.locals import *pygame.init()pygame.display.set_mode((1,1), pygame.NOFRAME)background = pygame.image.load(image1).convert()mouse_c=pygame.image.load(image2).convert_alpha()colorpal = pygame.Surface.get_palette(mouse_c)print colorpal
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您想要做的是需要大量像素级的工作,因此,我建议您使用一个pygame.PixelArray对象直接对表面进行像素访问。

对于您特别想做的事情,听起来可以使用该pygame.PixelArray.replace()方法。


查看完整回答
反对 回复 2021-03-29
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您可以使用get_atPygame曲面的方法获得图像曲面上的单个像素-如中所述mouse_c.get_at((0,0))

严格来说,这是您所要的-但它无法满足任何现实世界的需求,这是非常极端的,我要说的是,处理这样的图像的所有像素非常慢。

您可以使用图像缓冲区get_buffer并在那里解释数据,原始数据,或者将缓冲区传递给用本机代码编写的函数以提高速度。

不过,如果您的目标是实时用另一种颜色替换颜色,则可以诉诸使用索引图像-这样,每个图像都会有一个颜色表,您只需将颜色编号修改100,0,255,并在渲染时图像,该颜色的所有出现都变为蓝色。这是快速的-效率不及硬件完成的8位视频游戏时代-但这将使您尝试在纯Python代码中进行的任何替换都快几个数量级。


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 711 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号