c# 读取opencv 生成的svm训练好的xml分类器
来源:互联网 发布:json格式转换工具类 编辑:程序博客网 时间:2024/06/16 18:02
需要用到opencv里面SVM训练分类器的数据:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Xml;using System.Xml.Linq; //需要添加的namespace xml_duqu{ public partial class Form1 : Form { static string strPath ; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); if (open.ShowDialog() == DialogResult.OK) { strPath = open.FileName; test(strPath); } } private void test(string filename) { XElement xe = XElement.Load(strPath);//加载XML文件 //使用LINT从XML文件中查询信息 XmlTextReader reader = new XmlTextReader(filename); XmlDocument xml = new XmlDocument(); //读取xml文件 xml.Load(filename); //你的xml地址 richTextBox1.Text = ""; FileStream fs = new FileStream("data.data", FileMode.Create); StreamWriter sw; sw = new StreamWriter(fs, Encoding.Default); bool flag = false; while (reader.Read()) { if (reader.Name != "") { if (reader.Name == "sv_total" || reader.Name == "_" || reader.Name == "rho" || reader.Name == "alpha" || reader.Name == "index")//根据想要的属性保存数据 { //if (reader.Name == "sv_total" || reader.Name == "rho" || reader.Name == "alpha" || reader.Name == "index") //sw.WriteLine(reader.Name); flag = true; } } if (reader.Name == ""&& flag) { // richTextBox1.Text = richTextBox1.Text + reader.Name + "\n"; // sw.WriteLine(reader.Name); if (reader.HasValue) { richTextBox1.Text = richTextBox1.Text + reader.Value + "\n"; string uu= reader.Value.Replace("\r\n",""); string []m = uu.Split(' '); for (int i = 0; i < m.Length; i++) { if (m[i] != "\r\n" && m[i] != "") sw.Write(m[i]+" "); //保存到TXT 文件里面 } sw.WriteLine(); flag = false; } } } sw.Close(); sw.Dispose(); } } }
效果如下:
winform 效果
TXT 效果
XML 文件
--------------------------------------------------------------------------------------------------------------
下面是把不同的属性存在不同的文件里面
-------------------------------------------------------------------------------------------------------------
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Xml;using System.Xml.Linq; namespace xml_duqu{ public partial class Form1 : Form { static string strPath ; static string[] total; static string[] total1; static string sv_count; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); if (open.ShowDialog() == DialogResult.OK) { strPath = open.FileName; test(strPath); } } private void test(string filename) { XElement xe = XElement.Load(strPath);//加载XML文件 //使用LINT从XML文件中查询信息 XmlTextReader reader = new XmlTextReader(filename); XmlDocument xml = new XmlDocument(); //读取xml文件 xml.Load(filename); //你的xml地址 richTextBox1.Text = ""; FileStream fs = new FileStream("data_sv.data", FileMode.Create);//支持向量 FileStream fs1 = new FileStream("data_alpha.data", FileMode.Create);//alpha 系数 FileStream fs2 = new FileStream("data_index.data", FileMode.Create);//index索引 FileStream fs3= new FileStream("data_rho.data", FileMode.Create);//rho偏置 StreamWriter sw; sw = new StreamWriter(fs, Encoding.Default);// StreamWriter sw1; sw1 = new StreamWriter(fs1, Encoding.Default);// StreamWriter sw2; sw2 = new StreamWriter(fs2, Encoding.Default);// StreamWriter sw3; sw3 = new StreamWriter(fs3, Encoding.Default);// bool flag = false; bool flag_sv_total=false; int count = 0; string name=""; // int alpha = 0; //int index = 0; List<string> sv_c= new List<string>(); List<string> sv_alpha = new List<string>(); List<string> sv_index = new List<string>(); while (reader.Read()) { if (reader.Name != "") { if (reader.Name == "sv_total"||reader.Name=="sv_count" || reader.Name == "_" || reader.Name == "rho" || reader.Name == "alpha" || reader.Name == "index") { name = reader.Name; //if (reader.Name == "sv_total" || reader.Name == "rho" || reader.Name == "alpha" || reader.Name == "index") //sw.WriteLine(reader.Name); if (reader.Name == "sv_total"&&count==0) { count++; flag_sv_total = true; } flag = true; } } if (reader.Name == ""&& flag) { // richTextBox1.Text = richTextBox1.Text + reader.Name + "\n"; // sw.WriteLine(reader.Name); if (reader.HasValue) { //richTextBox1.Text = richTextBox1.Text + reader.Value + "\n"; if (count == 1 && flag_sv_total) { //total = new string[Convert.ToInt32(reader.Value)]; //生成多少个支持向量的alpha //total1 = new string[Convert.ToInt32(reader.Value)]; //生成多少个支持向量的alpha count++; } string uu= reader.Value.Replace("\r\n",""); string []m = uu.Split(' '); for (int i = 0; i < m.Length; i++) { if (m[i] != "\r\n" && m[i] != "") { if (name == "_")//支持向量的存入txt { sw.Write(m[i] + " "); } if (name == "alpha") { //total[alpha] = m[i]; // sv_alpha.Add(m[i]); sw1.WriteLine(m[i]); // alpha++; } if (name == "index") { //total1[index] = m[i]; // sv_index.Add(m[i]); sw2.WriteLine(m[i]); //index++; } if (name == "rho") { //sv_c.Add(m[i]); sw3.WriteLine(m[i]); } if (name == "sv_count") { //sv_c.Add(m[i]); sw3.Write(m[i]+" "); } } } sw.WriteLine(); flag = false; } } } sw.Close(); sw.Dispose(); sw1.Close(); sw1.Dispose(); sw2.Close(); sw2.Dispose(); sw3.Close(); sw3.Dispose(); fs.Dispose(); fs1.Dispose(); fs2.Dispose(); fs3.Dispose(); } }}
- c# 读取opencv 生成的svm训练好的xml分类器
- 测试 svm 训练的xml 分类器 ~
- 测试 svm 训练的xml 分类器 ~
- Opencv运用训练好的SVM分类器进行行人检测(效果不理想
- SVM+HOG:训练分类器生成.xml文件
- SVM+HOG:用初次训练的.xml分类器在负样本原图上检测生成HardExample样本
- OpenCV 训练分类器生成XML文件【完整过程】
- opencv中应用HOG特征训练SVM多分类器的一般框架
- 使用opencv下的SVM分类器
- Opencv: 测试所生成的分类器xml
- opencv训练自己的分类器
- OpenCV Haar特征分类器的训练
- OpenCV训练自己的分类器
- opencv 训练自己的分类器
- opencv训练自己的分类器
- 【转】openCV中训练好的级联Harr特征分类器参数含义
- HOG特征的SVM分类器训练代码
- HOG特征的SVM分类器训练代码
- ArcMap 无法启动
- 第一节 与SDL第一次亲密接触
- 不调用字符串库函数,实现字符串复制函数
- sql中的join
- 写文档的经验教训
- c# 读取opencv 生成的svm训练好的xml分类器
- memset简单实现
- 移动物联智慧科技:移动应用案例
- 堆排序
- 自己可能用到的笔试面试题(整理C/C++)
- 使用chmod同时给目录、文件夹赋予不同的权限
- 微信公众账号运营培训内部教程
- PLSQL常用语句汇总
- 直接拿来用!最火的iOS开源项目(二)