Mat src_edge(img_filtered.size(), CV_8UC1); Canny(img_filtered, src_edge, 3, 9); string edge_name = "edge" + to_string(img_id) + ".jpg"; imwrite(edge_name, src_edge); // 计算图像中的宽高 cv::Rect exRect = boundingRect(src_edge); int width = exRect.width; int height = exRect.height; cout << "====== w" << width << endl; cout << "====== h" << height << endl;
时间: 2024-01-16 16:02:11 浏览: 132
这段代码使用了OpenCV库对输入图像进行边缘检测,并计算了边缘图像中包含的最小矩形的宽和高。具体解释如下:
- 首先,定义了一个大小与输入图像img_filtered相同的CV_8UC1类型的Mat变量src_edge,用于存储边缘检测后的图像。
- 接着,调用Canny函数对输入图像img_filtered进行边缘检测,将检测结果存储到src_edge中。其中,参数3和9分别表示Canny算法的低阈值和高阈值。
- 然后,定义一个字符串变量edge_name,用于存储边缘图像的文件名。这里采用了字符串拼接的方式,将输入图像的ID号与"edge"字符串拼接在一起作为文件名。
- 接着,调用imwrite函数将边缘图像src_edge保存为文件。
- 然后,使用boundingRect函数计算边缘图像src_edge中包含的最小矩形,将结果存储到一个cv::Rect类型的变量exRect中。
- 最后,分别计算最小矩形的宽度和高度,将结果分别存储到整型变量width和height中,并输出到控制台。
需要注意的是,这段代码中的变量img_id没有给出,无法确定其含义。
阅读全文