C 的功能类似于Numpy Flatten

function in C++ similar to numpy flatten

本文关键字:Numpy Flatten 类似于 功能      更新时间:2023-10-16

c 或openCV中是否有任何功能可以执行与numpy flatten((函数相同的操作?

我认为我的问题含糊不清。我正在尝试在C OPENCV环境中使用K-Means细分,在Python中给出了一个示例。/p>

center = np.uint8(center) res = center[label.flatten()]

我已经能够完成大部分操作,直到C 中的这一扁平事物标签的尺寸为921600 x 1,我也可以在C 中获得。中心维度为4x3矩阵。我想这里的技巧是使所有标签值都特定于中心值。因此,最后" res"变为921600 x 3。

所以我的问题是如何使用OpenCV在C 中进行此操作?

谢谢

,所以我已经弄清楚了,没有直线或1行解决方案(如果有我知道哈哈(

res = center[label.flatten()] 

可以在C OpenCV中进行以下操作。

for(int i = 0; i<labels.rows ; i++)
{
  if(labels.at<int>(i) == 0) { 
    res.push_back(centers.row(0));
  } else if(labels.at<int>(i) == 1) {
      res.push_back(centers.row(1)); 
  } else if(labels.at<int>(i) == 2) {
      res.push_back(centers.row(2)); 
  } else{
      res.push_back(centers.row(3));
  } 
}

谢谢。

旧问题,但以防万一有人在这里结束,正确答案是 reshape MAT class的方法。检查OpenCV文档以获取更多信息:https://docs.opencv.org/4.3.0/d3/d63/classcv_1_1mat.html#a4eb96e3251417fa88b78b78e2abd6cfd6cfd7d8

这是一个执行扁平的示例函数:

cv::Mat Flatten(const cv::Mat& mat)
{
    return mat.reshape(1, 1);
}