想要在得到的hsv检测出来的黄色区域检测边缘并找到角点应该怎么处理图像C++
时间: 2024-03-04 15:50:22 浏览: 22
检测出来的黄色区域,可以使用Canny函数进行边缘检测。Canny函数的使用方法如下:
```c++
cv::Mat imgGray;
cvtColor(imgHSV, imgGray, cv::COLOR_BGR2GRAY); // 将HSV图像转换为灰度图像
cv::Mat imgCanny;
Canny(imgGray, imgCanny, 50, 150); // Canny函数进行边缘检测
```
在得到边缘图像之后,可以使用cornerHarris函数来检测图像中的角点。cornerHarris函数的使用方法如下:
```c++
cv::Mat imgDst;
cv::cornerHarris(imgCanny, imgDst, 2, 3, 0.04); // 检测角点
cv::Mat imgDstNorm;
cv::normalize(imgDst, imgDstNorm, 0, 255, cv::NORM_MINMAX); // 角点响应值归一化到0~255
```
最后,可以使用threshold函数对角点响应值进行二值化,提取出角点坐标。
```c++
cv::Mat imgThreshold;
cv::threshold(imgDstNorm, imgThreshold, 200, 255, cv::THRESH_BINARY); // 二值化角点响应值
std::vector<cv::Point> corners;
for (int i = 0; i < imgThreshold.rows; i++) {
for (int j = 0; j < imgThreshold.cols; j++) {
if (imgThreshold.at<uchar>(i, j) == 255) {
corners.push_back(cv::Point(j, i)); // 找到角点坐标
}
}
}
```
这样就可以在得到的HSV图像中检测出黄色区域,并在边缘图像中检测出角点了。需要注意的是,cornerHarris函数在检测角点时需要输入灰度图像。