OpenCV检测图像里物体长度的C++代码
时间: 2023-06-12 17:08:24 浏览: 142
Measuring size of objects in an image with OpenCV源代码
以下是使用 OpenCV 检测图像里物体长度的示例 C++ 代码:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
// 读取图片
cv::Mat img = cv::imread("input.jpg");
// 将图片转换为灰度图
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
// 对灰度图进行二值化处理
cv::Mat binary;
cv::threshold(gray, binary, 100, 255, cv::THRESH_BINARY);
// 查找轮廓
std::vector<std::vector<cv::Point>> contours;
cv::findContours(binary, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
// 遍历轮廓
for (int i = 0; i < contours.size(); i++)
{
// 计算轮廓周长
double perimeter = cv::arcLength(contours[i], true);
// 计算轮廓面积
double area = cv::contourArea(contours[i]);
// 计算物体长度
double length = 4 * std::sqrt(area / CV_PI);
// 显示物体长度
cv::putText(img, std::to_string(length), contours[i][0], cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255));
}
// 显示处理后的图片
cv::imshow("img", img);
cv::waitKey(0);
return 0;
}
```
这段代码的主要思路是先将图片转换为灰度图,再进行二值化处理,然后查找轮廓,遍历轮廓计算周长和面积,最后根据公式计算物体长度并在图片上显示。注意,这里的公式是基于假设物体为圆形的情况下计算的,如果你的物体形状不同,需要根据实际情况进行调整。
阅读全文