【问题标题】:How to save the drawn rectangle in OpenCV?如何在 OpenCV 中保存绘制的矩形?
【发布时间】:2015-05-18 12:07:28
【问题描述】:

我是 OpenCV 的新手,我正在制作一个视频,我必须检测移动对象并在对象周围绘制一个矩形。我必须为每个被检测到的对象绘制矩形。我使用下面的代码绘制了矩形。现在我想保存矩形,有人可以告诉我如何将矩形保存为图像吗?

代码是

rectangle( frameSequence, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 );

【问题讨论】:

    标签: opencv image-processing


    【解决方案1】:

    只需获取一个子矩阵或 roi。你可能想要一个深拷贝

    cv::Mat frame;
    //get the frame ...
    cv::Mat subFrame = frame(cv::Rect(x, y, w, h).clone();
    or
    cv::Mat subFrame;
    frame(cv::Rect(x, y, w, h)).copyTo(subFrame);
    imwrite(filename, subframe);
    

    【讨论】:

      【解决方案2】:

      frameSequence 已经是 cv::mat 的一种(大概),这意味着它已经“保存”在您的程序中。

      如果您想将其“保存”到外部文件(.jpg 等),则需要使用imwrite

      imwrite( "../../images/rectangle.jpg",frameSequence);
      

      为了只将矩形保存到垫子上,您只需创建一个空白矩阵,然后将其传递给rectangle()。这意味着这个新矩阵中的唯一数据将是矩形的坐标。

      cv::Mat newRectMat;
      rectangle( newRectMat, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 );
      

      【讨论】:

      • frameSequence 已经是 cv::mat 的类型。但是您的代码将整个帧保存为 image 。我只想保存 Rectangle 部分。
      • 你想要一个只有矩形坐标的垫子吗?
      • 是的,我想要用上面的代码绘制的矩形。
      • 我不明白你。经过一些处理后,我在 .我正在它上面绘制矩形(在 mat Framesequence 中)。如何在没有任何东西的情况下在 New Blank Mat 中绘制矩形,Framesequence Mat 有矩形
      • 绘制矩形完全独立于您的处理。该处理为您提供矩形的值。然后你可以在任何你想要的地方画它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多