Python数组管理C++等效程序

Python array management C++ equivalent

本文关键字:程序 C++ 数组 管理 Python      更新时间:2023-10-16

我知道SO不是租用编码器,但我有一个非常简单的python示例,我需要帮助将其翻译成C++

grey_image_as_array = numpy.asarray( cv.GetMat( grey_image ) )
non_black_coords_array = numpy.where( grey_image_as_array > 3 )
# Convert from numpy.where()'s two separate lists to one list of (x, y) tuples:
non_black_coords_array = zip( non_black_coords_array[1], non_black_coords_array[0] )

我想,第一个相当简单——创建了一个线性可索引数组,其中包含从cv.GetMat中检索的字节,对吧?

什么等价于pyton的where,尤其是这个zip函数?

我不知道OpenCV,所以我不能告诉你cv.GetMat()的作用。显然,它返回一些可以用作或转换为二维数组的东西。您正在使用的OpenCV的C或C++接口可能具有类似的名称函数。

以下几行创建了grey_image_as_array中大于3的条目的索引对数组。CCD_ 7中的每个条目是CCD_ 8中基于零的x-y坐标。给定这样的坐标对xy,您可以使用grey_image_as_array[y][x]访问二维C++数组grey_image_as_array中的相应条目。

Python代码必须避免在图像上进行显式循环才能获得良好的性能,因此它需要使用NumPy提供的矢量化函数。表达式CCD_ 13是矢量化比较,并且产生与CCD_ 14相同形状的布尔数组。接下来,numpy.where()提取该布尔数组中True条目的索引,但结果不是上述格式,因此我们需要zip()对其进行重构

在C++中,不需要避免显式循环,等效的numpy.where()将毫无意义——只需编写循环并以您选择的格式存储结果。