在多个框架上绘制矩形

时间:2015-10-08 08:23:48

标签: c++ opencv image-processing computer-vision

甚至可以在多个框架上绘制一个矩形吗? 让我解释一下。我有一个高箱子我想在那个盒子上画一个矩形,但问题是盒子太大而不适合框架内。我知道盒子的确切尺寸以及离盒子有多远。现在我想将我的相机从上到下移动,以便我可以在盒子上看到完整的矩形。

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题,但这些是我的两分钱。

我假设你有一个框架,它是cv::Mat中的一个图像,它显示了一个对象(一个框),你想在它周围画一个矩形。您知道图像中对象的2D坐标。然后,您可以绘制一个这样的矩形:

cv::rectangle(image, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(255, 0, 0)); 

x1 y1x2 y2是要显示的矩形的两个对角,cv::Scalar是颜色(如果图像为CV_8UC3则为红色)。

移动相机时,我假设您在新图像中重新计算对象的2D坐标。然后,您必须再次重绘矩形。最终的代码应该与此类似:

while (true) {
  cv::Mat image = getImageFromCamera();
  cv::Point corner1, corner2;
  computeRectangleCoordinates(corner1, corner2);
  // draw
  cv::rectangle(image, corner1, corner2, cv::Scalar(255, 0, 0));
  // display
  cv::imshow("box", image);
  cv::waitKey(5);
}

答案 1 :(得分:0)

一种简单的方法是首先将这些帧合并/组合成一个更大的帧(大于框),然后在这个组合帧上绘制框。

如果您需要绘制每个小框架,您可以从组合框架中进一步提取ROI。