017 OpenCV 向量机SVM
目录
一、环境
二、SVM原理
三、完整代码
一、环境
本文使用环境为:
- Windows10
- Python 3.9.17
- opencv-python 4.8.0.74
二、SVM原理
OpenCV中的向量机(SVM)是一种监督学习算法,用于分类和回归分析。它通过找到一个最优的超平面来将不同类别的数据分开,并使用支持向量来确定这个超平面的位置和方向。
SVM的基本思想是找到一个最优的超平面,使得两个类别之间的间隔最大化。这个间隔被称为“最大间隔”,而支持向量则是位于间隔边缘上的样本点。这些支持向量决定了最优超平面的位置和方向,因此它们也被称为“支持向量机”。
在OpenCV中,SVM可以用于二分类、多分类和回归分析。对于二分类问题,SVM会找到一个最优的超平面,将正类和负类分开。对于多分类问题,SVM会使用“一对一”或“一对多”策略来处理多个类别。对于回归分析问题,SVM会找到一个最优的超平面,将输入数据映射到一个连续的输出值上。
SVM的核心是核函数,它用于将输入数据映射到一个高维空间中。在高维空间中,数据更容易被分离,因为不同类别之间的距离更大。常用的核函数包括线性核、多项式核、径向基函数核(RBF)和sigmoid核等。不同的核函数适用于不同类型的数据,选择合适的核函数可以提高SVM的性能。
线性核是最简单的核函数,它将输入数据直接映射到高维空间中。如果数据的维度很高,那么线性核的效果可能不太好。多项式核可以将输入数据映射到一个更高维的空间中,但是它需要更多的计算资源。径向基函数核(RBF)是一种非常强大的核函数,它可以将输入数据映射到一个无限维的空间中。但是,RBF需要调整一个参数C来控制间隔的大小,这可能会影响模型的性能。sigmoid核可以将输入数据映射到一个概率空间中,它通常用于二分类问题。
总之,OpenCV中的向量机是一种强大的监督学习算法,可以用于分类和回归分析。它的核心是核函数,不同的核函数适用于不同类型的数据。选择合适的核函数可以提高SVM的性能,从而更好地解决实际问题。
三、完整代码
以下代码是在二维坐标系上,随便设置4个点,第一个点类别是:1;剩余三个点类别是:-1。向量机作用就是找到一个2维决策面(线),将上述两类点划分开。
import cv2 as cv
import numpy as np# 设置训练数据(二分类)
labels = np.array([1, -1, -1, -1])
trainingData = np.matrix([[501, 10], [255, 10], [501, 255], [10, 501]], dtype=np.float32)# 训练SVM
# 初始化
svm = cv.ml.SVM_create()
svm.setType(cv.ml.SVM_C_SVC)
svm.setKernel(cv.ml.SVM_LINEAR)
svm.setTermCriteria((cv.TERM_CRITERIA_MAX_ITER, 100, 1e-6))
# 开始训练
svm.train(trainingData, cv.ml.ROW_SAMPLE, labels)
# 用于数据可视化
width = 512
height = 512
image = np.zeros((height, width, 3), dtype=np.uint8)# 显示不同类别区域
green = (0,255,0)
blue = (255,0,0)
for i in range(image.shape[0]):for j in range(image.shape[1]):sampleMat = np.matrix([[j,i]], dtype=np.float32)response = svm.predict(sampleMat)[1]if response == 1:image[i,j] = greenelif response == -1:image[i,j] = blue
# 显示训练数据
thickness = -1
cv.circle(image, (501, 10), 5, ( 0, 0, 0), thickness)
cv.circle(image, (255, 10), 5, (255, 255, 255), thickness)
cv.circle(image, (501, 255), 5, (255, 255, 255), thickness)
cv.circle(image, ( 10, 501), 5, (255, 255, 255), thickness)# 显示支撑向量(决策边界)
thickness = 2
sv = svm.getUncompressedSupportVectors()for i in range(sv.shape[0]):cv.circle(image, (int(sv[i,0]), int(sv[i,1])), 6, (128, 128, 128), thickness)
cv.imwrite('result.png', image) # save the image
cv.imshow('SVM Simple Example', image) # show it to the user
cv.waitKey()

相关文章:
017 OpenCV 向量机SVM
目录 一、环境 二、SVM原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、SVM原理 OpenCV中的向量机(SVM)是一种监督学习算法,用于分类和回归分析。它通过找到一个最优的超平…...
Qt练习题
1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否…...
文本转图像 学习笔记
VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型,可以将图像或文本转换为高质量的图像。 VQ (Vector Quantization)是一种数据压缩技术,是指将连续数据表示为离散化的向量。输入的图像或文本…...
开源CDN软件GoEdge —— 筑梦之路
官方网站:GoEdge CDN - 制作自己的CDN - GoEdge CDN | 自建CDN GoEdge是一款管理分布式CDN边缘节点的开源工具软件,目的是让用户轻松地、低成本地创建CDN/WAF等应用。 特性 免费 - 开源、免费、自由、开放 简单 - 架构简单清晰,安装简单&a…...
基于SpringBoot+Vue会员制医疗预约服务管理信息系统(Java毕业设计)
点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…...
【Linux | 编程实践】防火墙 (网络无法访问)解决方案 Vim常用快捷键命令
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...
仅 CSS 阅读进度条
为了构建一个阅读进度条,即显示用户向下滚动时阅读文章的进度,很难不考虑 JavaScript。但是,事实证明,您也可以使用纯 CSS 构建阅读进度条。 从本质上讲,一个名为 animation-timeline 的新实验性 CSS 属性可以让你指定…...
深度剖析中国居民消费价格指数CPI数据可视化案例-Python可视化技术实现(附完整源码)【数据可视化项目案例-16】
🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本专栏包括所有的可视化技术学习,感兴趣可以到本专栏页面,查阅可视化宝典可快速了解本专栏。订阅专栏用户可以在每篇文章底部下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论…...
SpringBoot——嵌入式 Servlet容器
一、如何定制和修改Servlet容器的相关配置 前言: SpringBoot在Web环境下,默认使用的是Tomact作为嵌入式的Servlet容器; 【1】修改和server相关的配置(ServerProperties实现了EmbeddedServletContainerCustomizer)例如…...
王炸升级!PartyRock 10分钟构建 AI 应用
前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…...
文件管理和操作工具Path Finder mac功能介绍
Path Finder mac是一款Mac平台上的文件管理和操作工具,提供了比Finder更丰富的功能和更直观的用户界面。它可以帮助用户更高效地浏览、复制、移动、删除和管理文件,以及进行各种高级操作。 Path Finder mac软件功能 - 文件浏览:可以快速浏览文…...
转换 pytorch 格式模型为 caffe格式模型 pth2caffemodel
基于 GitHub xxradon/PytorchToCaffe 源码,修改 example\resnet_pytorch_2_caffe.py 如下 import os import sys sys.path.insert(0, .)import torch from torch.autograd import Variable from torchvision.models import resnet import pytorch_to_caffe"&q…...
【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用
目录 1 方法一:逐个生成Motorola S-record(s19,srec…),Intel HEX,Bin文件 1.1 生成Motorola S-record(s19,srec…)文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …...
Java工程找不到javax.xml.bind.annotation包
文章目录 问题解决方法参考 问题 最近Java工程找不到javax.xml.bind.annotation包,进行了解决。 解决方法 参考 stackoverflow: package javax.xml.bind.annotation does not exist error javax.xml.bind这个库从Java 11版本就被移除了,缺失了这个包…...
【C语言】网络字节序和主机字节序
网络字节序和主机字节序是计算机中字节的两种排序方式,它们主要用于解决不同计算机之间数据通信的问题。 一、网络字节序 也被称为大端字节序,是一种标准的字节序。在网络通信中,如果两台主机的字节序不同,可能会导致数据解释的二…...
极简模式,助力宏观数据监控
随着UWA GOT Online采样的参数越来越多样化,为了提升开发者的使用体验,我们最新推出了三种预设数据采集方案:极简模式、CPU模式、内存模式。该更新旨在降低多数据采集对数据准确性的干扰,同时也为大家提供更精准且有针对性的数据指…...
智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.花授粉算法4.实验参数设定5.算法结果6.参考文…...
IT圈的“鄙视链”大揭秘:从Java到Go,编程语言之战!
目录 编辑 Java程序员: 自信满满的领头羊 C语言程序员: 严肃的技术守护者 汇编语言程序员: 古老的传承者 Go语言程序员: 新晋的潜力股 结语: 编程语言,相互鄙视中求共存 我的其他博客 在IT圈…...
【C++】算法库(复制操作、交换操作、变换操作)
C算法库 文章目录 C算法库复制操作copy , copy_ifcopy_ncopy_backward 交换操作swapswap_rangesiter_swap 变换操作transformreplacereplace_copy replace_copy_if 算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操…...
CV计算机视觉每日开源代码Paper with code速览-2023.12.6
点击计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构:Transformer】Rejuvenating image-GPT as Strong Visual Representation Learners 论文地址:https://a…...
Net/Net Core微信公众号上传图片永久图片素材和内容中图片素材不能用MultipartFormDataContent的坑
测试了N次,不能用net自带的 MultipartFormDataContent,否则微信公众号会一直报错41005错误,具体原因不详,只能拼装head字符串实现,下面是封装好的上传永久素材和临时图片素材的方法,下面为测试好的代码&…...
Skills 到底怎么快速入门?
一、常见误解 很多人第一次接触 Skills,以为它只是“给 Cursor 写规则文档”。这个理解太窄了。 Skills 的本质是可复用的能力模块。它不只是“规定输出格式”,而是可以封装任意需要多步操作、特定上下文或外部工具配合的任务。 二、三种类型类型核心作用…...
Vue3路由缓存优化指南:用keep-alive的include+max实现淘宝级页面保活
Vue3路由缓存优化实战:电商场景下的keep-alive高阶用法 电商平台的商品详情页与列表页频繁切换时,页面重载导致的性能损耗直接影响用户体验。去年双十一大促期间,某头部电商平台通过优化路由缓存策略,将页面切换速度提升了47%&…...
什么是模型存储
模型存储的理解 模型存储是指将训练好的机器学习模型保存到磁盘,以便后续直接使用而无需重新训练。 为什么需要模型存储? # 没有模型存储:每次使用都要重新训练 model train_model(data) # 可能需要几小时 prediction model.predict(ne…...
一键切换模型:OpenClaw同时管理多个SecGPT-14B实例
一键切换模型:OpenClaw同时管理多个SecGPT-14B实例 1. 为什么需要管理多个模型实例 去年我在搭建本地AI安全分析系统时,遇到了一个典型困境:当SecGPT-14B模型需要版本升级时,整个服务必须停机。更糟的是,有次模型推理…...
Local SDXL-Turbo应用案例:独立开发者构建个人AI绘画SaaS产品的技术栈选型
Local SDXL-Turbo应用案例:独立开发者构建个人AI绘画SaaS产品的技术栈选型 1. 引言:从想法到产品,一个开发者的选择 如果你是一名独立开发者,或者是一个小团队的负责人,想做一个自己的AI绘画工具,你可能会…...
探索高压柔性输电系统中6脉冲与12脉冲晶闸管控制HVDC仿真模型
高压柔性输电系统6脉冲,12脉冲晶闸管控制HVDC的仿真模型,说明文档在电力传输领域,高压柔性输电系统(HVDC)以其高效、灵活等特性占据着重要地位。其中,6脉冲和12脉冲晶闸管控制的HVDC仿真模型更是关键部分&a…...
无失效数据的产品可靠性评估案例
当所有寿命相关的试验全部通过且无失效发生时如何评价产品可靠性作者:Julius王政 关键点o 一个产品可能有几项与寿命相关的可靠性验证试验。例如,车辆中使用的电子控制模块(我们称之为 ECU)通常有以下四项与寿命相关的试…...
STM32自动循迹小车设计与实现
1. 项目概述2016年TI杯电子设计竞赛中,我们团队设计了一款基于STM32的自动循迹小车系统。这个项目获得了省级一等奖,也是我职业生涯的重要转折点。作为控制类题目,系统需要实现沿预定轨迹自动行驶,并能检测轨迹旁的金属硬币。核心…...
植物基肉类替代品市场的增长与投资机会
植物基肉类替代品市场的增长与投资机会 关键词:植物基肉类替代品、市场增长、投资机会、消费趋势、行业发展 摘要:本文聚焦于植物基肉类替代品市场,深入分析其市场增长的驱动因素、现状及未来趋势,同时探讨了该领域蕴含的投资机会。通过对核心概念的阐释、相关算法原理的介…...
