Python OpenCV SVM 实现

2024-02-02

因此,我有一个包含样本图像的矩阵(全部转换为向量),该矩阵通过 PCA/LDA 运行,还有一个向量表示每个图像所属的类。现在我想使用 OpenCV SVM 类来训练我的 SVM(我使用的是 Python,OpenCV 2.3.1)。但我在定义参数时遇到问题:

test = cv2.SVM()
test.train(trainData, responses, ????)

我被困在如何定义 SVM 的类型(线性等)和其他东西上。在 C++ 中,您可以通过声明来定义它: svm_type=CvSVM::C_SVC...Python 没有这个。 C++还有一个特殊的类来存储这些参数->CvSVMParams。有人可以给我一个Python 的例子吗?比如定义 SVM 类型、gamma 等。

2.3.1 文档是这样说的:

Python: cv2.SVM.train(trainData, responses[, varIdx[, sampleIdx[, params]]]) → retval

什么是 varIdx 和 SampleIdx,以及如何定义参数?


要使用 OpenCV 机器学习算法,您必须编写一些包装类:

1.第一堂家长课

class StatModel(object):
    '''parent class - starting point to add abstraction'''    
    def load(self, fn):
        self.model.load(fn)
    def save(self, fn):
        self.model.save(fn)

2.最后SvM包装器:

class SVM(StatModel):
    '''wrapper for OpenCV SimpleVectorMachine algorithm'''
    def __init__(self):
        self.model = cv2.SVM()

    def train(self, samples, responses):
        #setting algorithm parameters
        params = dict( kernel_type = cv2.SVM_LINEAR, 
                       svm_type = cv2.SVM_C_SVC,
                       C = 1 )
        self.model.train(samples, responses, params = params)

    def predict(self, samples):
        return np.float32( [self.model.predict(s) for s in samples])

3.使用示例:

import numpy as np
import cv2

samples = np.array(np.random.random((4,2)), dtype = np.float32)
y_train = np.array([1.,0.,0.,1.], dtype = np.float32)

clf = SVM()
clf.train(samples, y_train)
y_val = clf.predict(samples)

设置参数

设置参数很简单 - 只需编写一个将参数作为键保存的字典即可。您应该查看原始文档以查看所有可能的参数和允许的值:http://opencv.itseez.com/modules/ml/doc/support_vector_machines.html#cvsvmparams http://opencv.itseez.com/modules/ml/doc/support_vector_machines.html#cvsvmparams

是的,svm_type 和 kernel_type 的可能值在 C++ 中,但有一种简单的方法可以将这些常量转换为 Python 表示形式,例如 CvSVM::C_SVC 在 Python 中写为 cv2.SVM_C_SVC。

Prelude要获取更多机器学习算法的包装器,请查看字母识别.py磁盘上的 opencv 示例中的示例或 OpenCV 存储库的打开 url:https://github.com/Itseez/opencv/tree/master/samples/python2 https://github.com/Itseez/opencv/tree/master/samples/python2

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

Python OpenCV SVM 实现 的相关文章

随机推荐

  • scrollIntoView() 不适用于水平滚动(Selenium)

    我想向右滚动到一列 这是我尝试过的 JavascriptExecutor driver executeScript arguments 0 scrollIntoView true element 这适用于垂直滚动 但不适用于水平滚动 Ele
  • 我可以在 C# 中实现从派生类复制的“复制构造函数”吗?

    一个特定于应用程序的示例来说明我眼前的问题 我有一个元数据提供程序类 具有以下 删节的 接口 public class CtsDataAnnotationsModelMetadataProvider DataAnnotationsModel
  • 如何使用 python 将行从树莓派插入 Oracle SQL 数据库?

    我目前正在开展一个个人项目 其中涉及 a 带有 RFID 读取器 写入器模块的 Raspberry Pi Model b Oracle SQL 数据库 11g Python 脚本 这就是我正在尝试做的事情 我需要 Raspberry Pi
  • Heroku Nodejs 路径问题...错误:ENOENT:没有这样的文件或目录

    我有一个使用 hapi js 的 nodejs 应用程序 我正在尝试从 url 下载图像 Heroku 给我提供了路径错误 My code Request uri pipe fs createWriteStream dirname publ
  • jstree 移动、拖放

    我想实现 jstree 中节点的移动功能 是需要实现的移动还是拖放 另外 最好有将容器绑定到事件的工作代码和事件代码 如果您不需要强制执行任何移动规则 不允许某些节点移动到其他节点等 则只需使用 dnd 插件 如果您需要强制执行移动规则 可
  • 使用 jQuery UI Widget Factory 创建实例变量的正确方法

    我正在使用 jQuery UI 小部件工厂 widget myPlugin options create function instanceVar huzzah 在测试中 看起来instanceVar实际上是原型的一部分 因此 该插件的所有
  • 如何在 jQueryUI 中手动触发自动完成“选择”事件?

    我正在使用 jQueryUI 自动完成 并且我有一个映射到选择事件的函数 例如 someId autocomplete source someData select function event ui focus function even
  • 上传 Excel 文件并从中提取数据,然后使用 MVC asp.net 将数据放入数据库中

    我想使用服务器中某个文件夹中的 HTML Input 上传 Excel 文件 并且还想从中提取数据并将该数据放入数据库中 那么MVC Asp net中有什么聪明的方法来上传和提取数据然后将数据放入数据库吗 没有这样聪明的方法 你不得不 上传
  • 从应用程序内访问 Win 7 上的 HKLM 注册表分支

    是否可以从应用程序写入 Win 7 中的 HKLM 注册表分支 我现有的代码无法写入 Win 7 计算机上的 HKLM 注册表分支 而它is能够在 XP 机器上执行此操作 如何允许应用程序在 Win 7 上对 HKLM 进行读 写访问 或者
  • “类型‘string | string[]’不可分配给类型‘string’

    我正在使用 Node TypeScript 和集成的 swagger 进行 API 调用 我有一个大摇大摆的请求 http localhost 3033 employees search username test http localho
  • 银行 API/协议 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有银行通过任何形式的 API 提供个人账户的数据馈送 我本质上是想在不登录他们的网站的情况下检查帐户
  • Access 2013 accde 文件无法导出到 acFormatXLSX

    我有一个 Access 2013 数据库 并将其保存为 accde 文件以提供给最终用户 我注意到报告打印预览功能区上不再有导出按钮 我不确定为什么它们存在于 accdb 中 但消失在 accde 文件中 并且无法使用 Google 找到任
  • 在 C++ 的 gdb 中修改数组元素的值

    只是想知道如何在 C 的 gdb 下修改数组的多个元素的值 感谢致敬 就像是 print memcpy the array you want to modify newvalue1 newvalue2 newvalueN N sizeof
  • 从 Xcode 4.2 升级到 Xcode 4.3 后,仪器命令行失败

    从 Xcode 4 2 升级到 Xcode 4 3 后 instruments命令行工具失败并出现以下错误 错误 在 Developer 中找不到开发人员目录 跑步 usr bin xcode select 更新开发者目录路径 sudo u
  • RXJS:类型错误:this._subscribe 不是函数

    我正在将 ionic 3 8 应用程序迁移到 3 9 2 此迁移包括对 RXJS 5 5 的更新 我现在遇到这个错误 TypeError this subscribe is not a function In this subscribe
  • 将 git 设置为版本控制时,RStudio 给出“功能不正确”

    当我创建一个新项目并选择创建一个新的 Git 存储库时 或者当我尝试更改项目选项中的版本控制系统时 我收到一条 RStudio 错误 指出 函数不正确 带有一个大 X 并且没有任何额外信息 下面的链接有类似的问题 但他们更改 git exe
  • C# - 如何控制chrome浏览器

    我想制作一个应用程序 您可以在其中指定网站名称 您的用户名和密码 并且该应用程序会自动登录您在指定网站中的所有帐户 我已经使用 Windows 窗体应用程序和网络浏览器完成了此操作 但我希望我的应用程序能够在 Chrome 中打开所有这些网
  • Neo4j慢创建方法[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 在我的 Neo4j Neo4j Spring Data 应用程序中 我有以下实体 VoteGroup包含关系VOTED ON an
  • 为什么 .NET Native 编译循环以相反的顺序进行?

    我正在研究 NET Native 编译器执行的优化技术 我创建了一个示例循环 for int i 0 i lt 100 i Function 我用 Native 编译了它 然后我拆了一下结果 dllIDA 中包含机器代码的文件 结果 我有
  • Python OpenCV SVM 实现

    因此 我有一个包含样本图像的矩阵 全部转换为向量 该矩阵通过 PCA LDA 运行 还有一个向量表示每个图像所属的类 现在我想使用 OpenCV SVM 类来训练我的 SVM 我使用的是 Python OpenCV 2 3 1 但我在定义参