Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenCV中保存绘制的矩形?_Opencv_Image Processing - Fatal编程技术网

如何在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的一种类型(大概是这样),

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

代码是

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);