我是OpenCV的新手,我正在制作视频,我必须检测移动的物体并在物体周围画一个矩形。我必须为每个被检测的对象绘制矩形。我使用下面的代码绘制了矩形。现在我要保存矩形,有人可以告诉我如何将矩形保存为图像?
代码是
rectangle( frameSequence, Point( x-20, y+20), Point( x+20, y-20), Scalar( 0, 55, 255 ), +1, 4 );
答案 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);