opencv将数据从* Mat复制到Mat

时间:2016-02-09 12:53:15

标签: c++ opencv image-processing

我有两个[18:07:29] Using gulpfile ~/src/gulpfile.js [18:07:29] Starting 'deploy'... [18:07:29] Authenticating with private key. [18:07:33] 'deploy' errored after 3.45 s [18:07:33] Error in plugin 'gulp-sftp' Message: Authentication failure. Available authentication methods: publickey Details: level: authentication partial: false [18:07:33] gulp-sftp SFTP abrupt closure [18:07:33] Connection :: close 个对象:

cv::Mat

数据从相机流入* frameLeftRemap。我需要将数据复制到frameLeft2,然后删除frameLeftRemap,以避免我看到的帧伪像。 (这是由相机制造商支持台提出的。)

功能是:

cv::Mat *frameLeftRemap;
cv::Mat frameLeft2;

copyTo和clone都会出错:

  void ProcessImageLeft(AVT::VmbAPI::FramePtr pFrame)
    {
        VmbUchar_t *pBuffer;
        VmbUint32_t FrameWidth;
        VmbUint32_t FrameHeight;


        //prepare frame information:
        pFrame->GetWidth(FrameWidth);
        pFrame->GetHeight(FrameHeight);
        pFrame->GetImage(pBuffer);
        //edited
        Mat1b imageL(FrameHeight, FrameWidth, (uchar*)pBuffer);

        cv::remap(imageL, *frameLeftRemap, mx1, my1, cv::INTER_LINEAR);

        frameLeft2 = frameLeftRemap->clone(); 

        //frameLeftRemap->copyTo(frameLeft2);


        cv::imshow("right", frameLeft2);
        cv::waitKey(1);
        delete frameLeftRemap;


    }

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

frameL= frameLeftRemap->clone();应该可以正常工作。好像你frameL有问题。尝试使用cv::imshowcv::imwrite显示它,以确保在克隆之前它已损坏。然后修复原始问题。如果您发布了代码,我们会为您提供更多帮助。