如何使用Opencv按列对矩阵进行子采样 使用OpenCV和C++,我想在每零、第三、第六、第九……每一个样本上采样一个矩阵…专栏。最快(或最优雅)的方法是什么

如何使用Opencv按列对矩阵进行子采样 使用OpenCV和C++,我想在每零、第三、第六、第九……每一个样本上采样一个矩阵…专栏。最快(或最优雅)的方法是什么,c++,opencv,C++,Opencv,例如,在Matlab中,这将是: sample = frame(:, 1:3:end); 在C++中,我可以这样做(但不知道是否有更好的方法): for(int i=0;i(3*2)-指针.. for(int i = 0; i < frame.cols/3; i++) for(int j = 0; j < frame.rows; j++) sample.at<uchar>(j,i) = frame.at<uchar>(j,3*i);

例如,在Matlab中,这将是:

 sample = frame(:, 1:3:end);
在C++中,我可以这样做(但不知道是否有更好的方法):

for(int i=0;i
感谢(int i=0;i
这也行。

您还需要原始矩阵吗?有几种优雅的方法可以做到这一点。在OpenCV中,您有行主表示法,所以我不确定如何解决这个问题,但是想象一下将下一列指针移动到您感兴趣的下一列<代码>0指针->(3*0)-指针
1指针->(3*1)-指针
2指针->(3*2)-指针
..
for(int i = 0; i < frame.cols/3;  i++)
    for(int j = 0; j < frame.rows; j++)
       sample.at<uchar>(j,i) = frame.at<uchar>(j,3*i);
for(int i = 0; i < frame.cols/3;  i++)
    frame.col(3*i).copyTo(sample.col(i));