如何在OpenCV中保存绘制的矩形?
我对OpenCV非常陌生,我正在制作一个视频,在这个视频中,我必须检测移动的对象并在对象周围绘制一个矩形。我必须为每个被检测到的对象绘制矩形。我使用下面的代码绘制了矩形。现在我想保存矩形,有人能告诉我如何将矩形保存为图像吗 代码是如何在OpenCV中保存绘制的矩形?,opencv,image-processing,Opencv,Image Processing,我对OpenCV非常陌生,我正在制作一个视频,在这个视频中,我必须检测移动的对象并在对象周围绘制一个矩形。我必须为每个被检测到的对象绘制矩形。我使用下面的代码绘制了矩形。现在我想保存矩形,有人能告诉我如何将矩形保存为图像吗 代码是 rectangle( frameSequence, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 ); frameSequence已经是cv::mat的一种类型(大概是这样),
rectangle( frameSequence, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 );
frameSequence
已经是cv::mat的一种类型(大概是这样),这意味着它已经“保存”在程序中
如果要将其“保存”到外部文件(.jpg等),则需要使用:
为了只将矩形保存到mat,只需创建一个空白矩阵,然后将其传递到rectangle()
。这意味着这个新矩阵中的唯一数据将是矩形的坐标
cv::Mat newRectMat;
rectangle( newRectMat, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 );
只需获得子矩阵或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);
frameSequence已经是cv::mat的类型。但您的代码将整个帧保存为图像。我只想保存矩形部分。就像你想要一个只有矩形坐标的垫子一样?是的,没错,我想要用上面的代码绘制的矩形。我不明白。经过一些处理后,我在中检测到一些对象。我在上面画了一个矩形(按mat Framesequence)。如何在没有任何东西的情况下在新的空白垫中绘制矩形,Framesequence垫具有矩形绘制矩形完全独立于您的处理。该处理为您提供矩形的值。然后你可以在任何你想画的地方画出来
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);