OpenCV中将一幅图平均分成N*M份,适合SVM+HOG训练的负样本采集

这篇博客介绍了如何利用OpenCV和C语言编写程序,自动将图片平均分成N*M份,以快速生成SVM+HOG人体检测的负样本。作者在VS2010+OpenCV2.4.9环境下编写,提到原始程序可能存在的读图限制,并分享了存储视频帧图像的代码。计划后续改进为读取txt文件路径,避免命名冲突问题。
摘要由CSDN通过智能技术生成

刚刚开始学OpenCV,这个程序是自己写的,运行环境是VS2010+OpenCV2.4.9;

因为做SVM+HOG对人体头部进行检测,自己偷懒,而且还不会用鼠标选ROI,就用ps,花了一整天,收集了1000+个正样本。感觉脑子都机械了!!!负样本需要3000-,完全没心情搞,就编个程,让电脑自己做。

这个程序用的 cvLoadImage读图,所以只有在同一个目录下的图片能读取。看有人用txt写了很多路径,然后一行一行的读,这个程序的改进就往这个方向了,不过这里先把程序发了,造福所有刚进opencv的同学。

#include <iostream>  
#include "opencv2/opencv.hpp"  
#include "iostream"  
#include <fstream>  
#include <windows.h>
#include <string>
using namespace cv; 

using namespace std;  
  
int main()  
{   //读取同一目录下的图片//
    IplImage *img = cvLoadImage("1.jpg");  
    IplImage *sub_image = nullptr;
	//1920=128*15;1080=128*8+56//
	//定义矩形选框大小这里,高num_height=128;宽num_width=128//
	int num_height=128,num_width=128;
	char save_file[200];  
	for(int i=1;i&l
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于没有提供具体的数据集和模型训练步骤,以下是一个基本的示例代码,帮助您了解如何使用Python和OpenCV来实现SVM HOG训练识别片中火焰并保存为.xml模型: 首先,需要安装OpenCV库: ``` pip install opencv-python ``` 然后,需要导入必要的库: ```python import cv2 import numpy as np import os ``` 准备训练数据: ```python # 定义训练数据目录 pos_dir = './pos' # 正样本目录 neg_dir = './neg' # 样本目录 # 训练数据文件名列表 pos_files = os.listdir(pos_dir) neg_files = os.listdir(neg_dir) # 定义标签 labels = np.append(np.ones(len(pos_files)), np.zeros(len(neg_files))) # 定义特征向量列表 feat_vecs = [] # HOG参数设置 win_size = (64, 64) block_size = (16, 16) block_stride = (8, 8) cell_size = (8, 8) nbins = 9 # 定义HOG描述符 hog = cv2.HOGDescriptor(win_size, block_size, block_stride, cell_size, nbins) # 提取正样本特征向量 for file in pos_files: img = cv2.imread(os.path.join(pos_dir, file)) feat_vec = hog.compute(img).reshape(-1) feat_vecs.append(feat_vec) # 提取样本特征向量 for file in neg_files: img = cv2.imread(os.path.join(neg_dir, file)) feat_vec = hog.compute(img).reshape(-1) feat_vecs.append(feat_vec) ``` 训练模型: ```python # 定义SVM模型 svm = cv2.ml.SVM_create() # 定义SVM参数 svm.setType(cv2.ml.SVM_C_SVC) svm.setKernel(cv2.ml.SVM_LINEAR) svm.setTermCriteria((cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_COUNT, 1000, 1e-3)) # 训练SVM模型 svm.train(np.array(feat_vecs), cv2.ml.ROW_SAMPLE, labels) ``` 保存模型: ```python # 保存为.xml文件 svm.save('svm_model.xml') ``` 以上代码仅供参考,具体实现需要根据您的数据集和算法调整参数和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值