我正在尝试了解OpenCV示例stereo_match.py。计算mask,out_points和out_colors的地方是我无法理解的。与此相关的代码如下:
mask = disp > disp.min()
out_points = points[mask]
out_colors = colors[mask]
在这里,我所知道的是,面具,点和颜色是大小为555x641的numpy数组。完成上述操作后,out_points和out_colors变为300000x3阵列。
这背后的逻辑是什么以及如何在纯python中实现此功能(也就是说,点,颜色和掩码是正常数组,我需要在不使用numpy的情况下执行上述操作并计算out_points和out_colors)?
谢谢
答案 0 :(得分:1)
我将解释代码:
mask = disp > disp.min()
这里mask是一个2D数组,其高度和宽度与disp相同,但所有值都存储为boolean。来自disp的每个值从逻辑语句计算:x> disp.min()
out_points = points[mask]
out_colors = colors[mask]
这些数组是掩码数组中存储为True的点和颜色的所有值。由于您的图像是555x641 = 350k像素,因此300k阵列的大小不足。由于彩色图像有三层,300k x 3是有意义的。
您可以在没有numpy的情况下执行这些操作,但我想它会减慢您的代码速度。如果您有其他问题,请询问!