opencv学习之角点检测

来源:互联网 发布:淘宝账号管理在哪 编辑:程序博客网 时间:2024/06/06 03:06
// newbuild_opencv1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "opencv2\imgproc\imgproc.hpp"#include "opencv2\highgui\highgui.hpp"#include<iostream>using namespace cv;using namespace std;#define WINDOW_NAME1 "【程序窗口1】"#define WINDOW_NAME2 "【程序窗口2】"Mat g_srcImage, g_srcImage1, g_grayImage;int thresh = 30;int max_thresh = 175;void on_CornerHarris(int, void*);int main(int argc, char** argv) {Mat g_srcImage = imread("E:\\pictures\\For_Project\\New_opencv\\temple2.jpg", 1);if (g_srcImage.empty()) {printf("could not load image...\n");return -1;}imshow("input image", g_srcImage);g_srcImage1 = g_srcImage.clone();cvtColor(g_srcImage1, g_grayImage, COLOR_BGR2GRAY);namedWindow(WINDOW_NAME1, WINDOW_AUTOSIZE);createTrackbar("阈值", WINDOW_NAME1, &thresh, max_thresh, on_CornerHarris);on_CornerHarris(0, 0);waitKey(0);return 0;}void on_CornerHarris(int, void*) {Mat dstImage;Mat normImage;Mat scaledImage;dstImage = Mat::zeros(g_srcImage.size(), CV_32FC1);g_srcImage1 = g_srcImage.clone();cornerHarris(g_grayImage, dstImage, 2, 3, 0.04, BORDER_DEFAULT);normalize(dstImage, normImage, 0, 255, NORM_MINMAX, CV_32FC1, Mat());convertScaleAbs(normImage, scaledImage);for (int j = 0; j < normImage.rows; j++) {for (int i = 0; i < normImage.cols; i++) {if ((int)normImage.at<float>(j, i) > thresh + 80) {circle(g_srcImage1, Point(i, j), 5, Scalar(10, 10, 255), 2, 8, 0);circle(scaledImage, Point(i, j), 5, Scalar(0, 10, 255), 2, 8, 0);}}}//imshow(WINDOW_NAME1, g_srcImage1);imshow(WINDOW_NAME2, scaledImage);}

0 0
原创粉丝点击