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

这篇具有很好参考价值的文章主要介绍了稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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

2、监督学习聚类

3、K均值聚类

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

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


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

稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用,OpenCV学习笔记,opencv,图像处理

 文章来源地址https://www.toymoban.com/news/detail-574720.html

//稀疏光流法跟中移动物体
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、监督学习聚类

稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用,OpenCV学习笔记,opencv,图像处理

 稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用,OpenCV学习笔记,opencv,图像处理

稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用,OpenCV学习笔记,opencv,图像处理 

稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用,OpenCV学习笔记,opencv,图像处理 

 

//监督学习聚类
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、深度神经网络模型的使用

到了这里,关于稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理

            激光雷达是目前正在改变世界的传感器。它集成在自动驾驶汽车、自主无人机、机器人、卫星、火箭等中。该传感器使用激光束了解世界,并测量激光击中目标返回所需的时间,输出是点云信息,利用这些信息,我们可以从3D点云中查找障碍物。         从自

    2024年02月07日
    浏览(35)
  • 从聚类(Clustering)到异常检测(Anomaly Detection):常用无监督学习方法的优缺点

    无监督学习是机器学习的一种重要方法,与有监督学习不同,它使用未标记的数据进行训练和模式发现。无监督学习在数据分析中扮演着重要的角色,能够从数据中发现隐藏的模式、结构和关联关系,为问题解决和决策提供有益的信息。相比于有监督学习需要标记样本的限制

    2024年02月11日
    浏览(37)
  • 【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK

            计算光流可以使用OpenCV的calcOpticalFlowPyrLK方法,cv2.calcOpticalFlowPyrLK是OpenCV库中的一个函数,用于计算稀疏光流。它实现的是Lucas-Kanade方法,这是一种常用的光流计算方法。         光流是图像中物体运动的近似表示,它描述了图像中每个像素点在连续两帧之间

    2024年02月02日
    浏览(25)
  • 【人工智能】— 无监督学习、K-means聚类(K-means clustering)、K-means损失函数,目标函数

    无监督学习是指在没有标签的数据上进行学习,即没有监督信号的指导下进行模型训练。在无监督学习中,我们主要关注从无标签数据中学习出数据的低维结构和隐藏的模式。 通过无标签数据,我们可以预测以下内容: 低维结构:通过无监督学习算法如主成分分析(PCA),

    2024年02月10日
    浏览(30)
  • 1.Unity中c#代码学习(读取物体名称+位置+移动)

    Ctrl + K + C 批量注释 Ctrl + K + U 批量取消注释 Debug.Log(\\\"**\\\");输出“**”中内容 GameObject obj = this.gameObject; this表示当前指代的物品 GameObject表示游戏中物体 Debug.Log(\\\"** 物体名字:\\\" + this.gameObject.name); this.gameObject.name直接调用类名 string name = obj.name; string 是c#中的字符串类型 Debug.Log(\\\"**

    2023年04月11日
    浏览(37)
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究高级版代码(迁移学习+kmeas聚类强特征生成))

    赛道 B:北京移动用户体验影响因素研究 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使用体验,从而进一步提升网络服务质量。客

    2024年02月13日
    浏览(34)
  • 【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    描述 实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 move_better.cs 物体根据按键移动

    2024年02月08日
    浏览(56)
  • Unity之用代码移动物体(平滑移动)

    因为移动的起点和终点都是不确定,所以这里用代码进行实现而不是动画(试过动画,但是发现无法成功添加clip) 物体移动常用的有两个方法,一个是Mathf.MoveTowards,一个是Mathf.Lerp,他们都用于值的平滑过渡 Mathf.MoveTowards          current:起点位置         target:目

    2024年02月07日
    浏览(28)
  • Unity点击物体后,移动到物体所在位置

    脚本挂在被点击的物体上 脚本挂在角色控制器上 改进:使用Raycast中的LayerMask 创建“cube”层 将想要被检测的物体放入该层 3.1、 3D物体事件监听 在相机上挂Physics Raycaster组件 检查是否有EventSystem 将脚本挂在被点击的物体上 添加组件Event Trigger组件 3.2、 世界UI世界监听

    2024年02月07日
    浏览(36)
  • Unity面向新手,如何使物体移动,让物体自由的动起来。几种移动方案讲解

    在大部分的Unity游戏开发中,移动是极其重要的一部分,移动的手感决定着游戏的成败,一个优秀的移动手感无疑可以给游戏带来非常舒服的体验。而Unity中有多种移动方法,使用Transform,使用刚体Rigidbody,使用CharacterController,使用NavMesh导航系统等等等等。当然,对于新手来

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包