C++和OpenCV通过卡尺ROI找到灰度点,再将点拟合成直线
时间: 2024-05-15 10:12:29 浏览: 12
卡尺ROI是一种常用的图像处理方法,可以用来寻找图像中的边缘或者线条。在OpenCV中,可以使用cv::line()函数来绘制直线,使用cv::findContours()函数来查找轮廓。
以下是一个简单的C++示例代码,可以实现从图像中找到灰度点,并将其拟合成一条直线:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
if (src.empty())
{
cout << "Could not open or find the image!\n" << endl;
return -1;
}
// 设置卡尺ROI的参数
int length = 50;
int step = 10;
int threshold = 100;
// 找到图像中的灰度点
vector<Point2f> points;
for (int y = length; y < src.rows - length; y += step)
{
for (int x = length; x < src.cols - length; x += step)
{
if (src.at<uchar>(y, x) > threshold)
{
Point2f pt(x, y);
points.push_back(pt);
}
}
}
// 拟合直线
Vec4f line_params;
fitLine(points, line_params, DIST_L2, 0, 0.01, 0.01);
// 绘制直线
Point pt1, pt2;
pt1.x = line_params[2] - line_params[0] * src.cols;
pt1.y = line_params[3] - line_params[1] * src.cols;
pt2.x = line_params[2] + line_params[0] * src.cols;
pt2.y = line_params[3] + line_params[1] * src.cols;
line(src, pt1, pt2, Scalar(0, 0, 255), 2, LINE_AA);
// 显示结果
imshow("Source image", src);
waitKey();
return 0;
}
```
在这个示例代码中,我们首先读入了一张灰度图像,然后使用一个双重循环来查找图像中的灰度点。将这些点传递给`fitLine()`函数,就可以得到一条拟合的直线。最后,使用`cv::line()`函数将这条直线绘制到图像上,并显示结果。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)