如何从彩色矩形构建 cv::Mat

How to build cv::Mat from coloured rectangles

我的目标是使用 OpenCV 创建产量图。这些产量图需要用彩色矩形来表示产量。由矩形 here.

构建的 Mat 示例

那么可以用彩色矩形创建 cv::Mat 吗?矩形的数量不是恒定的,因此每次使用都会发生变化。

为了明确问题:如果我有 4 个盒子(2x2 网格),我想自动制作一个与 4 个盒子一样大的垫子。如果我有 16 个盒子(4x4 网格),我想制作一个与 16 个盒子一样大的垫子。

我找不到让它工作的方法,所以我希望这里有人知道是否可行。

如果有人能帮助我就太好了,如果不能的话也欢迎替代!谢谢

一些信息:

您可以使用 OpenCV 函数创建矩形。

Basic Geometric Drawing OpenCV

int x = 0;
int y = 0;
int width = 10;
int height = 20;
// our rectangle...
cv::Rect rect(x, y, width, height);
// and its top left corner...
cv::Point pt1(x, y);
// and its bottom right corner.
cv::Point pt2(x + width, y + height);
// These two calls...
cv::rectangle(img, pt1, pt2, cv::Scalar(0, 255, 0));
// essentially do the same thing
cv::rectangle(img, rect, cv::Scalar(0, 255, 0))

ref

OpenCV 有 cv::hconcatcv::vconcat。像 numpy 的 hstack/vstack.

一样使用它们

确保您的部件具有相同的类型(和通道数)。

The documentation 有代码示例。

cv::Mat matArray[] = { cv::Mat(4, 1, CV_8UC1, cv::Scalar(1)),
                       cv::Mat(4, 1, CV_8UC1, cv::Scalar(2)),
                       cv::Mat(4, 1, CV_8UC1, cv::Scalar(3)),};
cv::Mat out;
cv::hconcat( matArray, 3, out );
//out:
//[1, 2, 3;
// 1, 2, 3;
// 1, 2, 3;
// 1, 2, 3]