稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用

news2025/2/1 22:42:09

目录

1、稀疏光流法跟中移动物体

2、监督学习聚类

3、K均值聚类

4、加载深度神经网络模型

5、深度神经网络模型的使用


1、稀疏光流法跟中移动物体

 

//稀疏光流法跟中移动物体
vector<Scalar> color_lut;//颜色查找表
void draw_lines(Mat &image, vector<Point2f> pt1, vector<Point2f> pt2)
{
	RNG rng(5000);
	if (color_lut.size() < pt1.size())
	{
		for (size_t t = 0; t < pt1.size(); t++)
		{
			color_lut.push_back(Scalar(rng.uniform(0, 255), rng.uniform(0, 255),
				rng.uniform(0, 255)));
		}
	}
	for (size_t t = 0; t < pt1.size(); t++)
	{
		line(image, pt1[t], pt2[t], color_lut[t], 2, 8, 0);
	}
}
int test6()
{
	VideoCapture capture("F:/testMap/lolTFT.mp4");
	Mat prevframe, prevImg;
	if (!capture.read(prevframe))
	{
		cout << "请确认输入视频文件是否正确" << endl;
		return -1;
	}
	cvtColor(prevframe, prevImg, COLOR_BGR2GRAY);
	//角点检测相关参数设置
	vector<Point2f> Points;
	double qualityLevel = 0.01;
	int minDistance = 10;
	int blockSize = 3;
	bool useHarrisDetector = false; double k = 0.04;
	int Corners = 5000;//角点检测
	goodFeaturesToTrack(prevImg, Points, Corners, qualityLevel, minDistance,
		Mat(), blockSize, useHarrisDetector, k);

	//稀疏光流检测相关参数设置
	vector<Point2f> prevPts;//前一帧图像角点坐标
	vector<Point2f> nextPts;//当前帧图像角点坐标
	vector<uchar> status;//检点检测到的状态
	vector<float> err;
	TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, 0.01);
	double derivlambda = 0.5;
	int flags = 0;

	//初始状态的角点
	vector<Point2f> initPoints;
	initPoints.insert(initPoints.end(), Points.begin(), Points.end());
	//前一帧图像中的角点坐标
	prevPts.insert(prevPts.end(), Points.begin(), Points.end());
	while (true)
	{
		Mat nextframe, nextImg;
		if (!capture.read(nextframe))
		{
			break;
		}
		imshow("nextframe", nextframe);

		//光流跟踪
		cvtColor(nextframe, nextImg, COLOR_BGR2GRAY);
		calcOpticalFlowPyrLK(prevImg, nextImg, prevPts, nextPts, status, err,
			Size(31, 31), 3, criteria, derivlambda, flags);

		//判断角点是否移动,如果不移动就删除
		size_t i, k;
		for (i = k = 0; i < nextPts.size(); i++)
		{
			//距离与状态测量
			double dist = abs(prevPts[i].x - nextPts[i].x) + abs(prevPts[i].y - nextPts[i].y);
			if (status[i] && dist > 2)
			{
				prevPts[k] = prevPts[i];
				initPoints[k] = initPoints[i]; nextPts[k++] = nextPts[i];
				circle(nextframe, nextPts[i], 3, Scalar(0, 255, 0), -1, 8);
			}
		}

		//更新移动角点数目
		nextPts.resize(k);
		prevPts.resize(k);
		initPoints.resize(k);

		//绘制跟踪轨迹
		draw_lines(nextframe, initPoints, nextPts);
		imshow("result", nextframe);
		char c = waitKey(50);
		if (c == 27)
		{
			break;
		}
		//更新角点坐标和前一帧图像
		std::swap(nextPts, prevPts);
		nextImg.copyTo(prevImg);
		//如果角点数目少于30,就重新检测角点
		if (initPoints.size() < 30)
		{
			goodFeaturesToTrack(prevImg, Points, Corners, qualityLevel,
				minDistance, Mat(), blockSize, useHarrisDetector, k);
			initPoints.insert(initPoints.end(), Points.begin(), Points.end());
			prevPts.insert(prevPts.end(), Points.begin(), Points.end());
			printf("total feature points : %d\n", prevPts.size());
		}
	}
	waitKey(0);
	return 0;
}

2、监督学习聚类

 

 

 

 

//监督学习聚类
int test7()
{
	Mat img = imread("F:/testMap/digits.png"); Mat gray;
	cvtColor(img, gray, COLOR_BGR2GRAY);
	//分割为160个cells
	Mat images = Mat::zeros(5000, 400, CV_8UC1);
	Mat labels = Mat::zeros(5000, 1, CV_8UC1);

	int index = 0;
	Rect numberImg;
	numberImg.x = 0;
	numberImg.height = 1;
	numberImg.width = 400;
	for (int row = 0; row < 50; row++)
	{
		//从图像中分割出20×20的图像作为独立数字图像
		int label = row / 5;
		int datay = row * 20;
		for (int col = 0; col < 100; col++)
		{
			int datax = col * 20;
			Mat number = Mat::zeros(Size(20, 20), CV_8UC1);
			for (int x = 0; x < 20; x++)
			{
				for (int y = 0; y < 20; y++)
				{
					number.at<uchar>(x, y) = gray.at<uchar>(x + datay, y + datax);
				}
			}
			//将二维图像数据转成行数据
			Mat row = number.reshape(1, 1);
			cout << "提取第"<< index + 1 <<"个数据" << endl; 
			numberImg.y = index;
			//添加到总数据中
			row.copyTo(images(numberImg));
			//记录每个图像对应的数字标签
			labels.at<uchar>(index, 0) = label;
			index++;
		}
	}

	imwrite("所有数据按行排列结果.png", images); 
	imwrite("标签. png", labels);
	//加载训练数据集
	images.convertTo(images,CV_32FC1); 
	labels.convertTo(labels,CV_32SC1);
	Ptr<ml::TrainData> tdata = ml::TrainData::create(images,ml::ROW_SAMPLE, labels);
	//创建K近邻类
	Ptr<KNearest> knn = KNearest::create();
	knn->setDefaultK(5);//每个类别拿出5个数据
	knn->setIsClassifier(true);//进行分类
	//训练数据
	knn->train(tdata);
	//保存训练结果
	knn->save("knn_model.ym1");
	//输出运行结果提示
	cout << "己使用K近邻完成数据训练和保存" << endl;

	waitKey(0);
	return 0;
}

3、K均值聚类

4、加载深度神经网络模型

5、深度神经网络模型的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员如何90天成功转行黑客(网络安全)?

有人说&#xff1a;”黑客到底比程序员高在哪&#xff0c;为什么很多人开始转行了“ 其实黑客都是程序员&#xff0c;但是并不是所有的程序员都是黑客. 从企业和社会需求来看&#xff0c;现在真不缺程序猿 &#xff0c;反而大量的缺安全工程师 &#xff0c;同样8000块月薪&am…

【Spring框架】spring更简单的读取和存储对象

目录 前置工作更加简单的存储Bean对象类注解存储Bean命名问题Java项目标准分层五大类注解之间的关系方法注解Bean重命名Bean的几种方式 前置工作 在spring-config.xml添加如下配置&#xff1a; 配置bean的扫描根路径&#xff1a;只有当前目录下的类才会扫描是否添加了注解&…

【Android Framework系列】第7章 WMS原理

1 前言 前面【Android Framework系列】第5章 AMS启动流程和【Android Framework系列】第6章 AMS原理之Launcer启动流程我们分析了AMS启动以及Launcher启动的整体流程&#xff0c;那Launcher(Activity启动)后&#xff0c;UI是如何渲染到屏幕并且展示出来的呢&#xff1f;我们这…

零代码编程:用ChatGPT批量提取网页上的文本信息内容

现在有很多个网页&#xff1a; 要批量提取网页内的文本&#xff1a; 可以在ChatGPT中这样写提示词&#xff1a; 你是一个Python专家&#xff0c;写一段Python程序&#xff0c;完全提取网页文本内容的任务&#xff0c;下面是一步步的步骤&#xff1a; 打开表格文件&#xff0c…

麒麟SP3X86系统下,安装Oracle11g数据库

目录 1、写在前面 2、准备工作 2.1 环境准备 2.2 数据库安装前准备 2.2.1 安装依赖 2.2.2 系统环境准备 2.2.3 上传软件安装包 2.2.4 安装调图形化界面的依赖和相关设置 3、执行安装程序 1、写在前面 随着国产化进程&#xff0c;各大应用需要在国产服务器上面进行部署…

【Java基础教程】(十五)面向对象篇 · 第九讲:抽象类和接口——定义、限制与应用的细节,初窥模板设计模式、工厂设计模式与代理设计模式~

Java基础教程之面向对象 第九讲 本节学习目标1️⃣ 抽象类1.1 抽象类定义1.2 抽象类的相关限制1.3 抽象类应用——模板设计模式 2️⃣ 接口2.1 接口定义2.2 接口的应用——标准2.3 接口的应用——工厂设计模式 (Factory)2.4 接口的应用——代理设计模式 (Proxy) 3️⃣ 抽象类与…

前端自动化测试工具 Cypress 试用调研记录

目录 前言 环境准备 1.工具&#xff1a;vs code&#xff1b;环境&#xff1a;node.js。 2.安装 cypress 3.安装插件&#xff1a; 4.配置&#xff1a; 5.启动命令&#xff1a; helloworld&#xff1a; 第一个用例 元素定位方式 使用 request 请求进行登录 提取登录方…

SpringMVC中@ControllerAdvice 注解的三种使用场景

全局异常处理 /**可以定义多个方法&#xff0c;不同的方法处理不同的异常。如专门处理空指针的方法&#xff0c;专门处理数组越界…… */ ControllerAdvice public class MyGlobalExceptionHandler{ExceptionHandler(Exception.class)//指定异常处理类型public ModelAndView c…

一、基础-4.MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

工业手持终端在工业现场的实际应用

在工业现场&#xff0c;RFID手持终端设备扮演着关键的角色。本文将介绍RFID手持终端设备在工业现场的功能和优势&#xff0c;并探讨其应用场景和最佳实践。同时&#xff0c;提供选择和使用RFID手持终端设备时的注意事项&#xff0c;以帮助企业实现有效的应用策略。 RFID手持终…

uniapp学习之【从一个小程序跳转到另一个小程序】

uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,extraData: {data1: test},success(res) {// 打开成功} })

【深度学习】日常笔记12

当⾯对更多的特征⽽样本不⾜时&#xff0c;线性模型往往会过拟合。 线性模型没有考虑到特征之间的 交互作⽤。对于每个特征&#xff0c;线性模型必须指定正的或负的权重&#xff0c;⽽忽略其他特征。与线性模型不同&#xff0c;神经⽹络并不局限于单独查看每个特征&#xff0c…

408 计算机考研-001-C语言-C语言基础-考研必学

408 计算机考研-001-C语言-C语言基础-考研必学 本文目录 408 计算机考研-001-C语言-C语言基础-考研必学考研C语言应掌握的内容考研真题2022 年考研真题第 1 题2022 年考研真题第 41 题2021 年考研真题第 42 题 一、打印&#xff1a;Hello, World二、数据类型1. 基本数据类型 三…

项目bug——编码问题报错(java.lang.IllegalStateException)

项目场景&#xff1a; 项目拉下后报错 问题描述 2023-07-17 14:26:07.596 ERROR 14300 — [ main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to load property source from ‘file:/Users/wang/IdeaProjects/ms-famil…

ADS交叉耦合振荡器仿真

ADS交叉耦合振荡器仿真 摘要参考视频书籍 环境过程结果分析频率计算瞬态仿真差分电压输出查看相位噪声分析 摘要 本文主要参考视频中如何使用进行ADS交叉耦合振荡器仿真和分析&#xff0c;由于视频中有诸多错误和视频清晰度较低&#xff0c;虽然视频博主及时改正&#xff0c;为…

家用洗地机好用吗、智能洗地机品牌排行榜

在现如今&#xff0c;洗地机不算是什么稀奇的东西了。正相反&#xff0c;越来越多的家庭在清洁的时候都会使用洗地机。因为洗地机相比传统的清洁方式&#xff0c;更加便捷高效&#xff0c;清洁使用的时候简直就是事半功倍&#xff01;那么今天小编就为给大家盘点几款非常适合家…

3Ds max入门教程:快捷键命令和鼠标热键大全

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 起初&#xff0c;您可能需要花一些时间查找热键&#xff0c;但是一旦您使用它们记住了它们&#xff0c;它们将使您以至少两倍的速度产生结果。例如&#xff0c;当您进行建模&#xff08;移动、缩放、旋转等…

霍纳法则----快速入门,贼好理解

别问我&#xff0c;为什么写这个&#xff0c;我可能一辈子都在开发中用不到&#xff0c;纯粹应付八股。 公式我不知道咋打&#xff0c;就网上复制了个图片。 这是什么&#xff1f;是一个含x的多项式&#xff0c;他有很多次方。假设让你写代码&#xff0c;x的输入项&#xff0c;…

一文带你了解动态内存管理

目录 动态内存存在的意义 动态内存函数的介绍 malloc和free calloc realloc 常见的动态内存错误 对NULL指针解引用操作 对动态开辟的空间的越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存的一部分 对同一块内存多次释放 动态开辟内存忘记释放…

时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测

时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测 目录 时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测 研究内容 NARX(Nonlinear AutoReg…