harris角点检测与绘制。通过滑动滚动条来控制阈值,以控制检测角点的数量并返回角点坐标
生活随笔
收集整理的這篇文章主要介紹了
harris角点检测与绘制。通过滑动滚动条来控制阈值,以控制检测角点的数量并返回角点坐标
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;Mat src = imread("D:\\VC\\c++\\opencv源碼\\opencv源碼\\3.png");//讀入圖像
Mat gray;//全局變量,不可以重復(fù)刷新
int thresh ;
void on_harris(int, void*)
{Mat src1 = src.clone();//定義局部變量,可以重復(fù)刷新Mat dst = Mat::zeros(src.size(), CV_32FC1);cornerHarris(gray, dst, 2, 3, 0.04);normalize(dst, dst, 0, 1, NORM_MINMAX);for (int i = 0; i < dst.rows; i++){for (int j = 0; j < dst.cols; j++){//通過(guò)角點(diǎn)響應(yīng)函數(shù)R得出每個(gè)像素對(duì)應(yīng)的值dst(float類型),定義一個(gè)閾值thresh,//當(dāng)dst的像素值大于thresh,就定義為角點(diǎn)if (dst.at<float>(i, j) * 255 > thresh+80){circle(dst, Point(i, j), 5, Scalar(0, 0, 255), 2, 8, 0);circle(src1, Point(i, j), 5, Scalar(0, 0, 255), 2, 8, 0);cout << "輸出角點(diǎn)坐標(biāo)" << endl;cout << Point(i,j) << endl;}}}imshow("【原始圖像】", src1);imshow("【角點(diǎn)檢測(cè)圖像】", dst);
}int main()
{gray = src.clone();cvtColor(gray, gray, COLOR_RGB2GRAY);namedWindow("【原始圖像】", WINDOW_AUTOSIZE);namedWindow("【角點(diǎn)檢測(cè)圖像】", WINDOW_AUTOSIZE);createTrackbar("【閾值】", "【原始圖像】", &thresh, 180, on_harris);on_harris(0, 0);waitKey(0);return 0;
}
?
?
?
總結(jié)
以上是生活随笔為你收集整理的harris角点检测与绘制。通过滑动滚动条来控制阈值,以控制检测角点的数量并返回角点坐标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用回调函数实现图像阈值分析。程序运行后
- 下一篇: 定义并输出二维点