如何在OpenCV中保存绘制的矩形?

时间:2015-05-18 12:07:29

标签: opencv image-processing

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

代码是

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

2 个答案:

答案 0 :(得分:1)

frameSequence已经是一种cv :: mat(大概),这意味着它已经被"保存了#34;就存储在你的程序中而言。

如果你想"保存"这是一个外部文件(.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 );

答案 1 :(得分: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);