我的目標是使用 OpenCV 創建產量圖。這些產量圖需要用彩色矩形來表示產量。這里是一個由矩形構建的墊子的例子。
那么是否可以創建一個帶有彩色矩形的 cv::Mat 呢?矩形的數量不是恒定的,因此每次使用都會發生變化。
為了明確問題:如果我有 4 個盒子(2x2 網格),我想自動制作一個與 4 個盒子一樣大的墊子。如果我有 16 個盒子(4x4 網格),我想做一個和 16 個盒子一樣大的墊子。
我找不到讓它作業的方法,所以我希望這里有人知道這是否可能。
如果有人可以幫助我,那就太好了,如果不可能,也歡迎替代品!謝謝
一些資訊:
- OpenCV 版本:4.5.3
- 作業系統:Ubuntu 20.04
- 語言:C
uj5u.com熱心網友回復:
您可以使用 OpenCV 功能創建矩形。
基本幾何繪圖 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))
參考
uj5u.com熱心網友回復:
OpenCV 有cv::hconcat和cv::vconcat. 像 numpy 的 hstack/vstack 一樣使用它們。
確保您的零件具有相同的型別(和通道數)。
該檔案有一個代碼示例。
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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417528.html
標籤:
上一篇:使用CV_8SC3、CV_16FC3、CV_16FC1時,我應該在cv::Mat.at<data_type>中使用什么資料型別?
