我有一些交通摄像头图像,我只想提取道路上的像素。我以前使用过遥感软件,可以指定类似的操作
img1 * img2 = img3
其中 img1 是原始图像,img2 是直接的黑白蒙版。本质上,图像的白色部分将评估为
img1 * 1 = img3
黑色部分的评估结果为
img1 * 0 = img3
因此,人们可以拍摄图像的一部分,让所有不重要的区域变成黑色。
有没有办法使用 PIL 来做到这一点?我找不到任何与我习惯看到的图像代数类似的东西。我尝试过混合功能,但这只会使它们一起消失。我已经阅读了一些关于 numpy 的内容,看起来它可能能够做到这一点,但在我深入研究之前,我想确定在 PIL 中没有直接的方法可以做到这一点。
谢谢。
这是我的代码,无论我做什么,我都会不断收到错误并遵循所有与索引相关的解决方案,有人可以帮助我吗?
site = pd.read_csv('../data/survey_site.csv')
sampled = site.sample(n=1)
site = site.reset_index(drop=True)
sampled = sampled.reset_index(drop=True)
mask = site.mask(site['name'] == sampled['name'])
Run Code Online (Sandbox Code Playgroud) 我一直在使用 OpenCV 和 Python 执行一些图像操作。我设法隔离了我感兴趣的轮廓。现在我有两张图像,一张 NDVI 图像和一张普通图像。我想用我的面具将两者合并。因此,如果我的蒙版的像素位置为零,则应使用图像一的像素;如果蒙版的像素位置为 1,则应使用图像二的像素。基于此,我想合并我的两张照片。
任何建议,将不胜感激 :)!
boolean_mask 的文档说必须静态知道掩码的形状。但是如果你这样做
mask.set_shape([None])
tf.boolean_mask(tensor, mask)
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常。有什么理由不这样做吗?
我使用这里的代码来模糊一些文本:
val radius = msgText.getTextSize() / 3
val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
msgTextView.getPaint().setMaskFilter(mTextFilter)
Run Code Online (Sandbox Code Playgroud)
...在某些时候我想撤消模糊,所以我尝试:
msgTextView.getPaint().setMaskFilter(null)
Run Code Online (Sandbox Code Playgroud)
但这并没有清除文本中的模糊之处,尽管它有描述:
package android.graphics;
...
public class Paint {
...
/**
* Set or clear the maskfilter object.
* <p />
* Pass null to clear any previous maskfilter.
* As a convenience, the parameter passed is also returned.
*
* @param maskfilter May be null. The maskfilter to be installed in the
* paint
* @return maskfilter
*/
public MaskFilter setMaskFilter(MaskFilter …Run Code Online (Sandbox Code Playgroud) 例如,在下面有 3 行的 Pandas 数据框中,所有这些都是字符串。我想根据条件下降if str[-1] == '-':
df = pd.DataFrame({'a': ["123-","123-1","123-2"]})
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
df[df['a'][-1]=='-']
Run Code Online (Sandbox Code Playgroud)
它会返回一个错误。我知道可以用 df.apply 函数来做到这一点。但我只是想知道是否可以用面具来完成。
我有一个 np 数组数组,我想删除与条件匹配的所有元素。我想避免for循环以使其更快。
np 数组的形状为 [N,2]。我想删除第一个元素等于零的所有子数组。
[[1,2],
[0,5], # <--- Remove
[5,1],
[0,3], # <--- Remove
[1,1],
[0,0], # <--- Remove
[5,0],
.....
[5,5]]
Run Code Online (Sandbox Code Playgroud)
我希望有一个只需一行代码的解决方案。我只是无法弄清楚这条线。我希望有人能帮助我。
谢谢。
我创建了一个点击游戏,我有一个透明的图像(我在 Pixel Perfect Collision 的 Mask 中设置)但是当我还点击透明部分时,会检测到 MOUSEBUTTONDOWN 事件。
实际上,我在 Player 类中的代码是:
self.image = pygame.image.load(str(level) + ".png").convert_alpha()
self.mask = pygame.mask.from_surface(self.image)
self.image_rect = self.image.get_rect(center=(WW, HH))
Run Code Online (Sandbox Code Playgroud)
这在主循环中:
x, y = event.pos
if my_player.image_rect.collidepoint(x, y):
my_player.click()
Run Code Online (Sandbox Code Playgroud)
所以我希望只有当我点击图像的彩色部分而不是透明背景时才触发点击事件。
谢谢,
我已经制作了一个推杆游戏,现在我想添加一个倾斜的墙类型。因此,我需要使用遮罩进行碰撞(到目前为止我只使用了矩形)。我花了几个小时学习掩模并试图找出为什么我的代码不起作用。没有错误,只是没有检测到碰撞。
我已将代码简化为更小的代码,以便我有效地测试它。从我所看到的一切来看,这似乎应该有效,但事实并非如此。这里是:
import pygame
# Pygame init stuff
pygame.init()
wind_width = 1200
wind_height = 700
gameDisplay = pygame.display.set_mode((wind_width, wind_height))
pygame.display.set_caption("Mini Golf!")
pygame.display.update()
gameExit = False
clock = pygame.time.Clock()
# Class setups
class Ball:
def __init__(self, x, y):
self.x = x
self.y = y
self.image = pygame.image.load("sball.png")
self.rect = self.image.get_rect()
self.mask = pygame.mask.from_surface(self.image)
def render(self):
self.rect.topleft = (self.x, self.y)
gameDisplay.blit(self.image, self.rect)
class Slant:
def __init__(self, x, y):
self.x = x
self.y = y
self.image = pygame.image.load("posslant.png")
self.rect = self.image.get_rect()
self.mask = …Run Code Online (Sandbox Code Playgroud) 我有一个图像及其相应的 cob 掩码作为 numpy 数组:
图像 numpy 数组的形状为 (332, 107, 3)。
掩码是布尔值(由 True/False 组成),并且具有二进制形状 (332, 107)。
[[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]]
Run Code Online (Sandbox Code Playgroud)
如何获取玉米棒子的颜色像素(蒙版所在的彩色图像中的所有像素)?