【问题标题】:Converting image from Triclops into opencv RGB image Mat.将 Triclops 中的图像转换为 opencv RGB 图像 Mat。
【发布时间】:2013-04-05 22:18:57
【问题描述】:

我想使用 OpenCV 对来自 Bumblebee2 相机的校正图像进行一些处理。我正在使用 FlyCapture2 和 Triclops 从传感器中抓取图像并进行校正。我想将 TriclopsColorImage 转换为 cv::Mat 以与 OpenCV 一起使用。

从 TriclopsColorImage 对象我可以得到以下信息:

int nrows; // The number of rows in the image
int ncols; //The number of columns in the image
int rowinc; //The row increment of the image
unsigned char * blue; //pixel data for the blue band of the image
unsigned char * red;  //pixel data for the red band of the image
unsigned char * green; //pixel data for the green band of the image

我不知道如何将此信息转换为 cv::Mat 图像以便我可以处理它。有人可以指出我正确的方向吗?

【问题讨论】:

    标签: visual-c++ opencv


    【解决方案1】:

    我尚未对此进行测试,也不知道您使用的是什么版本的 OpenCV,但类似以下内容应该可以为您指明正确的方向。因此,假设您的变量名称来自问题:

    cv::Mat R(nrows, ncols, CV_8UC1, red, rowinc);
    cv::Mat G(nrows, ncols, CV_8UC1, green, rowinc);
    cv::Mat B(nrows, ncols, CV_8UC1, blue, rowinc);
    
    std::vector<cv::Mat> array_to_merge;
    
    array_to_merge.push_back(B);
    array_to_merge.push_back(G);
    array_to_merge.push_back(R);
    
    cv::Mat colour;
    
    cv::merge(array_to_merge, colour);
    

    【讨论】:

    • 谢谢!奇迹般有效。我刚刚想出了一个替代解决方案,我将其发布在下面作为替代方案,以防有人想知道。
    【解决方案2】:

    一段时间后我想出了替代解决方案。

       // Create a cv::Mat to hold the rectified color image. 
       cv::Mat cvColorImage(colorImage.nrows, colorImage.ncols,CV_8UC3);
    
       unsigned char* bp = colorImage.blue;
       unsigned char* rp = colorImage.red;
       unsigned char* gp = colorImage.green;
    
       for(int row = 0; row< colorImage.nrows; row++){
    
           for( int col =0; col< colorImage.rowinc; col++){
    
                //printf("%u %u %u ",*bp,*rp,*gp);
                bp++;
                rp++;
                gp++;
    
                cvColorImage.at<cv::Vec3b>(row,col)[0] = *bp;
    
                cvColorImage.at<cv::Vec3b>(row,col)[1] = *gp;
    
                cvColorImage.at<cv::Vec3b>(row,col)[2] = *rp;
    
           }
           cout << endl;
       }
    
       imshow("colorimage", cvColorImage);
       waitKey(300);
    

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 2011-03-02
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多