/**
* @description: 计算外接矩形
* @param img 输入图像
* @return 外接矩形
*/
cv::Rect boundingrect(cv::Mat& img)
{
cv::Rect rect(0, 0, 0, 0);
bool flag = false;
for (size_t i = 0; i < img.cols; ++i)
{
for (size_t j = 0; j < img.rows; ++j)
{
if (img.at<uchar>(j, i))
{
rect.x = i;
flag = true;
break;
}
}
if (flag) break;
}
flag = false;
for (size_t i = img.cols - 1; i > 0; --i)
{
for (size_t j = 0; j < img.rows; ++j)
{
if (img.at<uchar>(j, i))
{
rect.width = i - rect.x;
flag = true;
break;
}
}
if (flag) break;
}
flag = false;
for (size_t i = 0; i < img.rows; ++i)
{
for (size_t j = 0; j < img.cols; ++j)
{
if (img.at<uchar>(i, j))
{
rect.y = i;
flag = true;
break;
}
}
if (flag) break;
}
flag = false;
for (size_t i = img.rows - 1; i >= 0; --i)
{
for (size_t j = 0; j < img.cols; ++j)
{
if (img.at<uchar>(i, j))
{
rect.height = i - rect.y;
flag = true;
break;
}
}
if (flag) break;
}
return rect;
}
boundingRect实现
于 2022-04-02 12:51:19 首次发布
该代码实现了一个计算二维图像外接矩形的函数`boundingrect()`. 它遍历输入图像的每个像素,寻找第一个非零像素以确定起始坐标,然后寻找最右侧和最底部的非零像素来确定宽度和高度,从而得出包围整个图像区域的最小矩形。
2365

被折叠的 条评论
为什么被折叠?



