作者回复: 你好,IUniverse。感谢你的留言。你的回答是正确的👍🏻。^^
作者回复: 你好,Yuhan。感谢你的留言。👍🏻,你的答案是正确的。^^
作者回复: 你好,王骥,感谢你的留言。 问题出现在最后的那个冒号上^^。 先看只留 r 通道的代码。 im_pillow_c1_3ch[:, :, 1:] = 0 这一行中的"1:"是指将从第一个通道到最后通道的所有数据赋值为0。 im_pillow_c1_3ch[:, :, 2:] = 0这一行中的"2:"是指将从第二个通道到最后通道的所有数据赋值为0。 其实,在第一行中已经把第二行的数据都赋值为0了。 又因为显示R通道的数据是将第1和第2个通道的数据都赋值为0,所以只有R的通道是正常显示出来。 在“只保留g通道”的代码中,"0:"是指从第0个通道开始到最后一个通道的所有数据都赋值为0,所以显示为黑色了。 “# 只留 b 通道”的代码同理。 可以这样修改代码: # 只留 r 通道 im_pillow_c1_3ch[:, :, 1:] = 0 # 只留 g 通道 im_pillow_c2_3ch[:, :, 0] = 0 im_pillow_c2_3ch[:, :, 2] = 0 # 只留 b 通道 im_pillow_c3_3ch[:, :, 0:1] = 0
作者回复: 你好,cab,感谢你的留言。是的,你说的没错👍🏻。OpenCV可以这么提取通道数据。 文中只是通过确定通道顺序这个小例子,引出Numpy数组的一些操作。
作者回复: hi,你好,非常感谢你的留言。 为了引出np.newaxis和concatenate可能稍微有点绕了,concatenate讲的也有点不是很清楚,我稍后更新一下。 np.concatenate中第一个参数是要合并的数组,np.concatenate((im_pillow_c1, zeros), axis=2) 这么写就是要将im_pillow_c1与zeros沿着axis=2进行合并。合并后的数组的shape是(im_pillow_c1.shape[0], im_pillow_c1.shape[1], 3)。 从第三个维度上来看有三个值,第一个是im_pillow_c1,第二个是0,第三个也是0。 所以这么写下来im_pillow_c1_3ch, im_pillow_c2_3ch, im_pillow_c3_3ch都是一样的结果。 可以这么修改 zeros = np.zeros((im_pillow.shape[0], im_pillow.shape[1], 1)) im_pillow_c1 = im_pillow_c1[:,:,np.newaxis] im_pillow_c2 = im_pillow_c2[:,:,np.newaxis] im_pillow_c3 = im_pillow_c3[:,:,np.newaxis] im_pillow_c1_3ch = np.concatenate((im_pillow_c1, zeros, zeros),axis=2) im_pillow_c2_3ch = np.concatenate((zeros, im_pillow_c1, zeros),axis=2) im_pillow_c3_3ch = np.concatenate((zeros, zeros,im_pillow_c1),axis=2)
作者回复: 你好,clee,感谢你的留言。如果是用Jupyter的话,可以检查检查一个单元格是否被执行多次了。 比如“im_pillow_c1 = im_pillow_c1[:, :, np.newaxis] ”它所在的单元格。第一次被执行im_pillow_c1变为(116, 318, 1)。 不小心再次执行的话,不会报错,im_pillow_c1就变为(116, 318, 1,1)了。 如果还是不行的话,你可以把你的代码发给我看看。
作者回复: 你好,平常心,感谢你的留言。关于G与B通道的代码可以这样写。 ^^ # g 通道 im_pillow_c2_3ch = im_pillow.copy() im_pillow_c2_3ch[:, :, 0] = 0 im_pillow_c2_3ch[:, :, 2] = 0 # b 通道 im_pillow_c3_3ch = im_pillow.copy() im_pillow_c3_3ch[:, :, 0:1] = 0
作者回复: 你好,文森特没有眼泪。首先,谢谢你的留言,然后为你的思路点赞👍🏻。 不过稍微有点小瑕疵,题目要求的是,如果通道0的值大于通道1的值,那么mask对应位置的数值就为0,否则为1。 你这样做的结果正好是相反了。 另外,你可以考虑考虑如何使用聚合函数np.argmax来求解,思考一下它的axis应该等于几,才能获得正确的答案。^^
作者回复: 是没看懂Mask吗?如果是的话mask在后面的分割中会有介绍。
作者回复: 好的,没问题,有机会一起合作^^