#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

Mat img1, img2, img3, img4, img5, img6, img_result, img_gray1, img_gray2, img_gray3, img_canny1, img_binary1, img_dist1, img_dist2, kernel_1, kernel_2, img_laplance, img_sharp;

char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
char win4[] = "window4";
char win5[] = "window5";
char win6[] = "window6";
char win7[] = "window7";

int thread_value = 60;
int max_value = 255;
RNG rng1(12345);
RNG rng2(1235);

int Demo_Shi_Tomasi();
void Demo_1(int, void*);

//Shi-Tomasi角点检测
int Demo_Shi_Tomasi()
{
  namedWindow(win1, CV_WINDOW_AUTOSIZE);
  //namedWindow(win2, CV_WINDOW_AUTOSIZE);
  //namedWindow(win3, CV_WINDOW_AUTOSIZE);

  img1 = imread("D://images//4//3.jpg");
  //img2 = imread("D://images//1//p5_1.jpg");
  if (img1.empty())
  {
    cout << "could not load image..." << endl;
    return 0;
  }
  imshow(win1, img1);

  cvtColor(img1, img2, CV_BGR2GRAY);
  imshow(win2, img2);

  createTrackbar("Track", win1, &thread_value, max_value, Demo_1);
  Demo_1(0, 0);

  return 0;
}

void Demo_1(int, void*)
{
  if (thread_value<10)
  {
    thread_value = 10;
  }
  //img3 = Mat::zeros(img2.size(), CV_32FC1);
  vector<Point2f> vec_points;
  double qualityLevel = 0.01;
  double minDistance = 10;
  int blockSize = 2;
  int kSize = 3;
  double k = 0.04;

  img4 = img1.clone();

  goodFeaturesToTrack(img2, vec_points, thread_value, qualityLevel, minDistance, Mat(), blockSize, false,k);

  for (size_t t=0;t<vec_points.size();t++)
  {
    Scalar color_1 = Scalar(rng1.uniform(0,255), rng1.uniform(0, 255), rng1.uniform(0, 255));
    circle(img4, vec_points[t], 2, color_1, 2, 8, 0);
  }
  
  imshow(win4, img4);
}

int main()
{
  Demo_Shi_Tomasi();

  waitKey(0);
  return 0;
}

最新文章

  1. img及父元素(容器)实现类似css3中的background-size:contain / background-size:cover
  2. Android之旅---广播(BroadCast)
  3. 原生js操作cookie
  4. PHP获取上个月、下个月、本月的日期
  5. PHP $_SERVER[&#39;PHP_SELF&#39;]、$_SERVER[&#39;SCRIPT_NAME&#39;] 与 $_SERVER[&#39;REQUEST_URI&#39;] 之间的区别
  6. 转:Javascript继承机制的设计思想
  7. SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理
  8. 压力测试工具ab - Apache HTTP server benchmarking tool
  9. spring boot 搭建web项目常见五种返回形式
  10. linux 安装Brew
  11. async get_event_loop
  12. cookie——创建、获取、删除
  13. vue学习笔记——路由
  14. Vxlan学习笔记——原理
  15. JVM 内存区域 (运行时数据区域)
  16. Fluent UDF【8】:编译型UDF
  17. 牛客网 PAT 算法历年真题 1009 : 1019. 数字黑洞 (20)
  18. 设置Redis最大占用内存
  19. 解决IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
  20. 15、Redis的集群

热门文章

  1. 连电子硬件行业都在开始使用 Git 了你还在等什么?
  2. STMM32 ‘&amp;’ 操作
  3. oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息
  4. NetCore下模拟和使用Modbus工业通信协议
  5. 20165226 实验四 Android程序设计
  6. 【洛谷】P1196 银河英雄传说(并查集)
  7. Java 中 wait, notify 和 notifyAll的正确使用 – 以生产者消费者模型为例
  8. iconv 解决utf-8和gb2312编码转换问题
  9. java 字符串排序
  10. JavaScript中的跨域详解(二)