Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查图像中绿色和蓝色值的奇偶性_Python_Numpy_Image Processing_Rgb - Fatal编程技术网

Python 检查图像中绿色和蓝色值的奇偶性

Python 检查图像中绿色和蓝色值的奇偶性,python,numpy,image-processing,rgb,Python,Numpy,Image Processing,Rgb,我有一个形状为(9,8,2)的数组ver,它是我从图像中提取的。 我搜索要做的是迭代这个数组的像素,检查绿色和蓝色值是否有不同的奇偶校验,如果有,将结果True放入一个列表中,并对每一行执行相同的操作 ver = im_arr[:9,:8,1:3] 在这里,我提取了图像的前9行,前8个像素,并提取了列,使其仅具有绿色和蓝色值。 我现在知道如何使用这样的2D阵列: cf = cf[:,1:3] jou = (cf.sum(1)%2).astype(bool) 但在这种情况下,对于3D阵列,我

我有一个形状为(9,8,2)的数组ver,它是我从图像中提取的。 我搜索要做的是迭代这个数组的像素,检查绿色和蓝色值是否有不同的奇偶校验,如果有,将结果True放入一个列表中,并对每一行执行相同的操作

ver = im_arr[:9,:8,1:3]
在这里,我提取了图像的前9行,前8个像素,并提取了列,使其仅具有绿色和蓝色值。 我现在知道如何使用这样的2D阵列:

cf = cf[:,1:3]
jou = (cf.sum(1)%2).astype(bool)

但在这种情况下,对于3D阵列,我真的不知道怎么做,我尝试了三个for循环,但它不起作用:

  for i in range(ver.shape[0]):
         for y in range(ver.shape[1]):
           for z in range(ver.shape[2]):
                juju[i,y,z] = (ver.sum(1)%2).astype(bool)

此代码生成一个随机图像并提取子集。然后检查数组中所有数字的剩余部分是否可以被2整除。np.all调用检查最后一个维度中的所有值是否为True,如果为True,则返回True,否则返回False。为了得到你想要的面具,我用~

编辑以添加一个解决方案,该解决方案检查跨维度的两个值是相等还是奇数

import numpy as np

image = np.random.randint(0, 255, (100, 100, 3))
subset = image[:9, :8, 1:]

even = np.remainder(subset, 2) == 0
mask = ~np.equal(even[..., 0], even[..., 1])

如果遮罩绿色和蓝色通道的LSB并添加它们,则只能获得:

0 + 0 = 0
0 + 1 = 1  <--- THIS
1 + 0 = 1  <--- THIS
1 + 1 = 2

你能简单解释一下奇偶校验是什么意思吗?如果我从图像中提取一个像素,我有一个像这样的阵列RGB,例如[5 140 24],我想检查140和24是否具有相同的奇偶校验(G和B值),这里是的,它们甚至返回False。如果它们有不同的奇偶校验->True,请提供一个,包括一些输入和预期的输出。我注意到它不适用于[133 201]这样的奇数,它也会返回True,它必须返回False,因为它们具有相同的奇偶校验(奇数)啊,我可能错误地解释了这个问题。我想他只是想检查一下是否有相同的情况,而不是两者都有。我会更新答案,以包括一个检查,如果两者都是相同的,无论是偶数或奇数。非常感谢!轴的-1是什么意思?它是指最后一个轴。因此,axis=0将对列进行求和,axis=1将对行进行求和,axis=2将对通道进行相加/求和。轴=2与轴=-1相同,因为2是最后一个轴。
0 + 0 = 0
0 + 1 = 1  <--- THIS
1 + 0 = 1  <--- THIS
1 + 1 = 2
mask = np.sum((ver & 1), axis=-1) == 1