Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过复制opencv数据调整矩阵大小_Opencv_Matrix - Fatal编程技术网

通过复制opencv数据调整矩阵大小

通过复制opencv数据调整矩阵大小,opencv,matrix,Opencv,Matrix,我试图创建一个矩阵,其中只有一列来自另一个矩阵,当然还有复制数据 void redim( Mat in , Mat &out) { for (int l=0 ; l < in.rows*in.cols ; l++){ for(int j=0; j< in.rows ; j++){ for(int i=0 ; i < in.cols; i++){ out.at <float> (l,0)= in.at <fl

我试图创建一个矩阵,其中只有一列来自另一个矩阵,当然还有复制数据

void redim( Mat in , Mat &out) {

  for (int l=0 ; l < in.rows*in.cols ; l++){
    for(int j=0; j< in.rows ; j++){
        for(int i=0 ; i < in.cols; i++){
        out.at <float> (l,0)= in.at <float> (j,i); 
        }
     }  
   }
}
int main(){
Mat It3;
It3 = (Mat_<double>(2,3) << 0,4,6,7,8,9);
Mat S= Mat :: zeros ( It3.rows* It3.cols , 1, CV_32FC1) ; 
redim(It3,S);
waitKey();
}
void redim(垫进、垫出){
对于(int l=0;l您正在将
浮点
双精度
混合作为数据类型。请选择一种
  • 你的
    for
    循环没有任何意义
  • 你可以:

    • 纠正
      循环的
      ,如
      到singlecolumn1
    • 使用
      for
      循环,但使用索引,如
      to singlecolumn2
    • 使用
      cv::重塑
      ,它正好做到了这一点,如
      到SingleColumn3
    参见下面的代码。
    b1
    b2
    b3
    将相等:

    #include <opencv2\opencv.hpp>
    using namespace cv;
    
    // Use two for loops, with coordinates
    void toSingleColumn1(const Mat1f& src, Mat1f& dst)
    {
        int N = src.rows * src.cols;
        dst = Mat1f(N, 1);
        int i=0;
        for (int r = 0; r < src.rows; ++r) {
            for (int c = 0; c < src.cols; ++c) {
                dst(i++, 0) = src(r, c);
            }
        }
    }
    
    // Use a single for loop, with indices
    void toSingleColumn2(const Mat1f& src, Mat1f& dst)
    {
        int N = src.rows * src.cols;
        dst = Mat1f(N, 1);
    
        for (int i = 0; i < N; ++i) {
            dst(i) = src(i);
        }
    }
    
    // Use cv::reshape
    void toSingleColumn3(const Mat& src, Mat& dst)
    {
        // The 'clone()' is needed to deep copy the data
        dst = src.reshape(src.channels(), src.rows*src.cols).clone(); 
    }
    
    int main() 
    {
        Mat1f a = (Mat1f(2,3) << 0.f, 4.f, 6.f, 7.f, 8.f, 9.f);
    
        Mat1f b1, b2, b3;
        toSingleColumn1(a, b1);
        toSingleColumn2(a, b2);
        toSingleColumn3(a, b3);
    
        return 0;
    }
    
    #包括
    使用名称空间cv;
    //使用两个用于循环,带有坐标
    无效至单柱1(常数Mat1f和src、Mat1f和dst)
    {
    int N=src.rows*src.cols;
    dst=Mat1f(N,1);
    int i=0;
    对于(int r=0;r