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

最佳答案

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

我假设您有一个框架,它是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);
}

关于c++ - 在多个框架上绘制矩形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33010400/

10-17 00:32