机器学习之-利用svm(支持向量机)分类(opencv3)

2023-11-08

svm分类算法在opencv3中有了很大的变动,取消了CvSVMParams这个类,因此在参数设定上会有些改变。

opencv中的svm分类代码,来源于libsvm。

int main(int argc, char** argv)
{
	// visual representation
	int width = 512;
	int height = 512;
	cv::Mat image = cv::Mat::zeros(height, width, CV_8UC3);

	// training data
	int labels[4] = { 1, -1, -1, -1 };
	float trainingData[4][2] = { { 501, 10 },{ 255, 10 },{ 501, 255 },{ 10, 501 } };
	cv::Mat trainingDataMat(4, 2, CV_32FC1, trainingData);
	cv::Mat labelsMat(4, 1, CV_32SC1, labels);

	// initial SVM
	cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
	svm->setType(cv::ml::SVM::Types::C_SVC);
	svm->setKernel(cv::ml::SVM::KernelTypes::LINEAR);
	svm->setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER, 100, 1e-6));

	// train operation
	svm->train(trainingDataMat, cv::ml::SampleTypes::ROW_SAMPLE, labelsMat);

	// prediction
	cv::Vec3b green(0, 255, 0);
	cv::Vec3b blue(255, 0, 0);
	for (int i = 0; i < image.rows; i++)
	{
		for (int j = 0; j < image.cols; j++)
		{
			cv::Mat sampleMat = (cv::Mat_<float>(1, 2) << j, i);
			float respose = svm->predict(sampleMat);
			if (respose == 1)
				image.at<cv::Vec3b>(i, j) = green;
			else if (respose == -1)
				image.at<cv::Vec3b>(i, j) = blue;
		}
	}

	int thickness = -1;
	int lineType = cv::LineTypes::LINE_8;

	cv::circle(image, cv::Point(501, 10), 5, cv::Scalar(0, 0, 0), thickness, lineType);
	cv::circle(image, cv::Point(255, 10), 5, cv::Scalar(255, 255, 255), thickness, lineType);
	cv::circle(image, cv::Point(501, 255), 5, cv::Scalar(255, 255, 255), thickness, lineType);
	cv::circle(image, cv::Point(10, 501), 5, cv::Scalar(255, 255, 255), thickness, lineType);

	thickness = 2;
	lineType = cv::LineTypes::LINE_8;

	cv::Mat sv = svm->getSupportVectors();
	for (int i = 0; i < sv.rows; i++)
	{
		const float* v = sv.ptr<float>(i);
		cv::circle(image, cv::Point((int)v[0], (int)v[1]), 6, cv::Scalar(128, 128, 128), thickness, lineType);
	}


	cv::imshow("SVM Simple Example", image);


	cv::waitKey(0);
	return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之-利用svm(支持向量机)分类(opencv3) 的相关文章

  • 使用 cvcreateimage 使用 opencv 创建简单的黑色图像

    来自 OpenCV 新手的非常基本的问题 我只想创建一个图像 每个像素设置为0 黑色的 我在 main 函数中使用了以下代码 IplImage imgScribble cvCreateImage cvSize 320 240 8 3 我得到
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

    目前 我的 EmguCV c 代码面临问题 我试图从数据库中识别我的图像 但它不起作用 一旦检测到我的脸 它就会崩溃 然后会出现此错误 附加信息 OpenCV 不同大小的对象 我尝试寻找这个错误 但我一无所知 这是我的代码 Action f
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • 如何将 opencv mat 图像转换为 gdi 位图

    我想将 openCV Mat 文件转换为 GDI 位图图像 我找不到任何有关如何执行此操作的信息 我认为没有直接的方法可以做到这一点 但我希望它不涉及将其写入文件并读回 http opencv users 1802565 n2 nabble
  • 从 2 个摄像头捕获(OpenCV、Python)[重复]

    这个问题在这里已经有答案了 所以我试图从 openCV 中的两个摄像头 python 和 windows 7 进行捕获 我用一台相机拍摄的效果很好 你也会注意到我正在对图像做一些时髦的事情 但这并不重要 这是尝试使用两个的代码 import
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • OpenCV 读取视频文件时内存不足

    此示例从文件中读取视频cv2 VideoCapture在 python OpenCV 中内存不足 import cv2 cap cv2 VideoCapture file mp4 while True ret frame cap read
  • Android for OpenCV - 打开跟踪文件时出错,UnsatisfiedLinkError

    我对 Android 开发和 OpenCV 都是新手 我从 Android 下载了 OpenCV 库http sourceforge net projects opencvlibrary files opencv android http
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • Opencv 运动检测与跟踪

    我需要在网络摄像头的视频帧中进行强大的运动检测和跟踪 背景总是一样的 目的是识别物体的位置 如果可能的话没有阴影 但并不急于去除阴影 我已经尝试过用于背景减法和阈值化的opencv算法 但这仅取决于一个图像作为背景 如果背景的亮度 或相机自
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 在 HSV 颜色空间内定义组织学图像掩模的颜色范围(Python、OpenCV、图像分析):

    为了根据颜色将组织学切片分成多个层 我修改了 OpenCV 社区提供的一些广泛分布的代码 1 我们的染色程序用不同的颜色标记组织横截面的不同细胞类型 B 细胞为红色 巨噬细胞为棕色 背景细胞核为蓝色 I m interested in se
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置

随机推荐

  • MySQL数据库之DCL命令

    一 DCL命令 GRANT 授予访问权限 REVOKE 撤销访问权限 COMMIT 提交事务处理 ROLLBACK 事务处理回退 SAVEPOINT 设置保存点 LOCK 对数据库的特定部分进行锁定 查看用户权限 SHOW GRANTS F
  • vue学习笔记(三)

    1 vue开发存在SEO问题 前端开发采用vue开发后是单页面 单页面里面 前后端分离 渲染过程是js写的 在js调用接口返回数据之前 页面已经被打开了 实际上就是空白页面 这个时候右键点击查看源代码 实际上是都看不到内容的 对SEO不太有
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点
  • Android动画+自定义Dialog实现闲鱼发布页面动态效果

    先来看一下效果图 一 新建一个项目DialogView 在layout文件夹下创建一个anmi的文件夹用于存放动画资源 1 首先创建进入Dialog和关闭Dialog时候的主题背景动画 进入Dialog时的动画 main go in xml
  • Ubuntu18 安装ssh

    1 安装ssh 在终端输入命令 sudo apt get install openssh server 2 查看SSH服务是否启动 输入命令 sudo ps e grep ssh
  • LRU算法

    http blog csdn net Ackarlix article details 1759793 http www cnblogs com changweihua archive 2012 05 13 2497903 html 文章一
  • STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析

    STM32中栈 堆 全局区 常量区 代码区 RAM ROM的分析 1 堆 栈区 STM32中堆栈是为了存储不同信息而开辟的空间 具体对应于启动文件中的head和stack所定义的内存空间 STM32中 堆向高地址增长 栈向低地址增长 堆 是
  • 探索学习Qt

    探索学习Qt 版本说明 版本 作者 日期 备注 0 2 loon 2018 10 26 新增部分说明内容及总结计划 目录 文章目录 探索学习Qt 版本说明 目录 一 目的 二 Qt是什么 三 Qt示例和教程 1 探索Qt creator 2
  • 安装依赖时报错:npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving

    F study heima vueCode demo3 gt npm i axios S npm ERR code ERESOLVE npm ERR ERESOLVE could not resolve npm ERR npm ERR Wh
  • VR丨有哪些靠谱的VR开发工具之引擎篇

    转载 http www uisdc com vr tools design engine C7210 靠谱的工具都有哪些 在不同的学习阶段又该怎样进行合理的选择 本文将聚焦于这两个问题向你介绍一系列主流设计开发工具 包括引擎 3D建模 2D
  • CEEMDAN算法及其应用

    目录 前言 一 CEEMDAN 算法 1 算法原理 2 MATLAB程序 二 CEEMDAN 算法的应用 1 CEEMDAN 小波阈值联合去噪 2 CEEMDAN 小波包分析降噪 3 CEEMDAN 时频峰值滤波 结束语 参考文献 前言 针
  • [计算机网络] 计算机网络基础总结

    计算机网络 计算机网络基础总结 文章目录 计算机网络 计算机网络基础总结 一 计算机网络体系结构 1 TCP IP的体系结构 2 OSI的体系结构 二 TCP协议 三 UDP协议 1 特点 2 报文段格式 四 HTTP协议 五 Socket
  • js打开新窗口设置窗口大小

    javascript g OpenWindow url jsp 800 600 function g OpenWindow pageURL innerWidth innerHeight var ScreenWidth screen avai
  • 【随机过程】19 - 随机过程的线性预测问题

    随机过程的线性预测问题 文章目录 随机过程的线性预测问题 1 随机过程的估计问题概述 1 1 预测问题 1 2 内插问题 1 3 滤波问题 2 随机过程的可预测性 2 1 新息过程 2 1 1 信息过程的定义 2 1 2 估计的子空间分解
  • Stable-Diffusion-WebUI 搭建使用教程

    Stable Diffusion Webui 是一个基于Gradio库的Stable Diffusion的浏览器界面 可以说是AI绘画集合体 支持目前主流的开源AI绘画模型 例如 NovelAi Stable Diffusion 有了它 我
  • cassandra 可视化工具

    cassandramanager razorsql presto devcenter
  • Qt出现错误 “undefined reference to `vtable for XXXXX.XXX”

    使用QT的继承类的时候本来很正常 但是添加了 Q OBJECT之后却发现出现了一大堆vtable告警 终于找到下面的解决方法了 重新qmake 如果新建一个类 继承了某个类 在这个类的头文件中式没有 Q OBJECT宏声明的 如果想使用si
  • ROS Docker 支持

    可供支持的DockerFile文件 kinetic ros core kinetic ros core xenial kinetic ros base kinetic ros base xenial kinetic kinetic robo
  • BigDecimal返回前端保留所有精度的问题解决

    在实际开发中我们有时候对数据精度要求高的时候会使用BigDecimal 但是有时候会发生0 5000返回给前端的时候转成0 5的问题 这时我们只需在bean属性中加上 JsonFormat shape JsonFormat Shape ST
  • 机器学习之-利用svm(支持向量机)分类(opencv3)

    svm分类算法在opencv3中有了很大的变动 取消了CvSVMParams这个类 因此在参数设定上会有些改变 opencv中的svm分类代码 来源于libsvm int main int argc char argv visual rep