精华内容
下载资源
问答
  • opencv人脸数据集.zip

    2021-07-27 04:57:21
    opencv 人脸数据集
  • opencv自制数据集

    2020-11-08 21:42:17
    opencv自制数据集

    opencv官方教程
    用法讲解
    github网址
    创建训练集:

    opencv_createsamplesUsage: opencv_createsamples
      [-info <collection_file_name>]
      [-img <image_file_name>]
      [-vec <vec_file_name>]
      [-bg <background_file_name>]
      [-num <number_of_samples = 1000>]
      [-bgcolor <background_color = 0>]
      [-inv] [-randinv] [-bgthresh <background_color_threshold = 80>]
      [-maxidev <max_intensity_deviation = 40>]
      [-maxxangle <max_x_rotation_angle = 1.100000>]
      [-maxyangle <max_y_rotation_angle = 1.100000>]
      [-maxzangle <max_z_rotation_angle = 0.500000>]
      [-show [<scale = 4.000000>]]
      [-w <sample_width = 24>]
      [-h <sample_height = 24>]
      [-maxscale <max sample scale = -1.000000>]
    

    例如:

    opencv_createsamples -vec vec/train.vec -img marker.jpg -bg bg.txt -maxxangle 0.3 -maxyangle 0.3 -maxzangle 0.3 -w 416 -h 416 -num 300
    

    注意:有些参数省略的话会报bg格式错误的错
    用Haar级联训练的

    opencv_traincascade
    Usage: opencv_traincascade
      -data <cascade_dir_name>
      -vec <vec_file_name>
      -bg <background_file_name>
      [-numPos <number_of_positive_samples = 2000>]
      [-numNeg <number_of_negative_samples = 1000>]
      [-numStages <number_of_stages = 20>]
      [-precalcValBufSize <precalculated_vals_buffer_size_in_Mb = 1024>]
      [-precalcIdxBufSize <precalculated_idxs_buffer_size_in_Mb = 1024>]
      [-baseFormatSave]
      [-numThreads <max_number_of_threads = 12>]
      [-acceptanceRatioBreakValue <value> = -1>]
    --cascadeParams--
      [-stageType <BOOST(default)>]
      [-featureType <{HAAR(default), LBP, HOG}>]
      [-w <sampleWidth = 24>]
      [-h <sampleHeight = 24>]
    --boostParams--
      [-bt <{DAB, RAB, LB, GAB(default)}>]
      [-minHitRate <min_hit_rate> = 0.995>]
      [-maxFalseAlarmRate <max_false_alarm_rate = 0.5>]
      [-weightTrimRate <weight_trim_rate = 0.95>]
      [-maxDepth <max_depth_of_weak_tree = 1>]
      [-maxWeakCount <max_weak_tree_count = 100>]
    --haarFeatureParams--
      [-mode <BASIC(default) | CORE | ALL
    --lbpFeatureParams--
    --HOGFeatureParams--
    

    例如

    opencv_traincascade -w 416 -h 416 -vec ./vec/train.vec -bg bg.txt -data ./data -numStages 5
    
    展开全文
  • OpenTLD opencv实现 2.4以上版本编译报错 include/TLD.h添加了头文件#include <opencv2/legacy/legacy.hpp> http://download.csdn.net/detail/zczhao2009/9406411 测试数据集
  • OpenCV 读取 Cifar 数据集

    千次阅读 2016-06-02 19:34:02
    OpenCV 读取 Cifar 数据集Cifar数据集的下载地址[http://www.cs.toronto.edu/~kriz/cifar.html]下载C语言版本的数据集 CIFAR-10 binary version (suitable for C programs) 162 MB c32a1d4ab5d03f1284b67883e8d...

    欢迎访问人工智能研究网 www.studyai.cn

    OpenCV 读取 Cifar 数据集(来自studyai.cn)

    Cifar数据集的下载地址[http://www.cs.toronto.edu/~kriz/cifar.html]

    下载C语言版本的数据集
    CIFAR-10 binary version (suitable for C programs) 162 MB c32a1d4ab5d03f1284b67883e8d87530

    程序代码

    #include <string>
    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <opencv2\opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    bool ReadCifar10DataBatch(const string& dir, const string& batchName, size_t imgCount, vector<Mat>& images, vector<int>& labels)
    {
        const int PATCH_SIZE = 32;          //图像块的尺寸: 32*32
        const int N_CHANEL = 3;             //通道数
        const int LINE_LENGTH = PATCH_SIZE * PATCH_SIZE * N_CHANEL + 1;//以字节为单位
    
        bool isSuccess = false;
    
        fstream fs(dir + batchName, ios::in | ios::binary);//以二进制方式读取
    
        if (fs.is_open())
        {
            cout << "成功打开文件: " << batchName << endl;
            char buffer[LINE_LENGTH];
            for (size_t imgIdx = 0; imgIdx < imgCount; imgIdx++)
            {
                fs.read(buffer, LINE_LENGTH);
                int class_label = (int)buffer[0];//类别标签:buffer[0]
                Mat red_img(32, 32, CV_8UC1, &buffer[1]);//红色通道:buffer[1->1024]
                Mat green_img(32, 32, CV_8UC1, &buffer[1025]);//绿色通道:buffer[1025->2048]
                Mat blue_img(32, 32, CV_8UC1, &buffer[2049]);//蓝色通道:buffer[2049->3072]
                vector<Mat> bgrMats = { blue_img, green_img, red_img };//OpenCV的通道顺序是BGR
                Mat rgb_img;
                cv::merge(bgrMats, rgb_img);//RGB通道融合
                //将样本和对应的标签加入集合
                images.push_back(rgb_img);
                labels.push_back(class_label);
            }
            isSuccess = true;
        }
        else
        {
            cout << "无法打开文件: " << batchName << endl;
            isSuccess = false;
        }
    
        fs.close();
        return isSuccess;
    }
    
    int main(int argc, char* argv[])
    {
        const string dir = "F:\\cifar-10-binary\\cifar-10-batches-bin\\";
        const string class_names[10] =
        {
            "airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"
        };
        const string batch_names[6] =
        {
            "data_batch_1.bin", "data_batch_2.bin", "data_batch_3.bin",
            "data_batch_4.bin", "data_batch_5.bin", "test_batch.bin"
        };
    
        size_t ImgCountPerBatch = 10000;
        vector<Mat> images;
        vector<int> labels;
        bool success = ReadCifar10DataBatch(dir, batch_names[2], ImgCountPerBatch, images, labels);
        if (success)
        {
            for (size_t imgIdx = 0; imgIdx < images.size(); imgIdx++)
            {
                Mat BigImg; cv::resize(images[imgIdx], BigImg, Size(128, 128));
                imshow("cifar image", BigImg);
                cout << "image index: "<<imgIdx<<"---->class label,name :" 
                    << labels[imgIdx] << "<->" << class_names[labels[imgIdx]] << endl;
                cv::waitKey(5);
            }
        }
    
        system("pause");
        return 0;
    }
    
    
    展开全文
  • opencv3人脸识别所用到的训练数据集,40个人脸数据,每个人10张照片。
  • opencv 人头分类器训练数据集 包括正样本集及负样本集,测试样本集;
  • python+opencv处理人脸数据集

    千次阅读 2017-03-29 17:18:14
    利用python+opencv以及标签的数据抠出人脸如下图 。 在这个实验中,可以学习到怎么在python中读.mat(MATLAB的文件),以及如何简单使用opencv ----------------------------------------

    本文主要做了以下的工作:

    把数据集中的人脸抠出来,单独作为人脸的数据。(已经有了图片中人脸的位置,放在.mat文件中)。

    利用python+opencv以及标签的数据抠出人脸如下图



    在这个实验中,可以学习到怎么在python中读.mat(MATLAB的文件),以及如何简单使用opencv

    -----------------------------------------------------------------分割线----------------------------------------------------

    准备工具:

    到 http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ 下载数据集。


    前两个圈里面的是原始图像,第三个圈是标签文件。也就是图像中人脸位置的数据。(数据集准备好了)

    ----------------------------------------------------------------------------------------------------------------------

    python版本建议用Anaconda2(2.7)的,因为这个集成了很多常会用到的库。

    如果没有opencv的请到下面地址下载,名字是cv2.pyd ( Python2.7版本 3.5可能用不了)

    http://pan.baidu.com/s/1o8qbp6y

    如果有opencv在电脑里的,请到./Build/python/2.7/x64 下可以找到。

    把上面的cv2.pyd放到python目录的./lib/site-package里面。

    至此准备工作做完,下面就开始进入正题

    -------------------------------------------------------------------------------------------------------------------------------------------------

    由于机器学习很多时候的标签文件都是存放在.mat文件中的,所以对于初学者而不会matlab的人来说,.mat文件在Python中如何读取会感到很苦恼。

    所以这一部分就简单介绍一下.mat文件。

    我们把上面的人脸标签数据集下载下来后可以看到这些文件


    可能下载下来后默认打开的类型不是.mat,更改的办法如下:

    控制面板----程序----默认程序---将文件类型与程序关联

    (不同的系统可能略有差异,但是大致都差不多)


    打开wider_face_train.mat后。看到工作区。我的版本是2014的。


    ,这些都是这个.mat文件中所含有的标签类别。

    例如这个 file_list 它是把所有训练集中的图片名字都放在了这里。具体点开进去就可以看到。下图中460x1 cell就是代表着里面一共有460个单元。



    这是每个图片的名字。


    其他标签也类似。这里再说一个相对比较复杂的就是人脸位置的标签数据。

    这个是存放在face_bbx_list,点进去里面之后可以看到下面的结构

    这里的第一行第一列的意思是:只有一个列表的数据(只有一个列表意味着只有一张人脸),这个列表里面有4个数据。

    第一个数据和第二数据是代表人脸位置左上角的坐标点。(列,行)

    第三个数据和第四个数据是代表宽度和高度。(可以在下载数据集的网站找到这些信息。)

    同样,第四行第一列代表着,这里有9*4的数组,这个数组第一行代表第一个人脸的位置,第二行是第二个人人脸的位置,以此类推。

    简单介绍完.mat文件后下面就是如何在python中读这些数据。


    ---------------------------------------------------------------------------------------------------------------------------------------------

    在Python中读取.mat需要用到scipy.io模块,如果前面安装的时候Anaconda,你就可以直接import。

    读取的时候主要是用到这以下几句:

    import scipy.io
    data=scipy.io.loadmat("val.mat")
    FileName=data['file_list']
    FileValue=data['face_bbx_list']
    FileOcc=data['occlusion_label_list']
    data['file_list']里面的file_list就是标签的名字。由于data是字典格式。所以可以用data.keys()去查询一下它所有标签的名字。


    那么已经读了.mat的文件了,如何把数据显示出来呢?,注意到,下面这三个圈圈,其实就是我们显示的方法。



    当然,这里是从1开始的,我们索引的时候要自然脑补到0.

    因此,如果我们想显示0_Parade_marchingband_1_849这个文件名。方法就是

    FileName[0][0][0][0]。



    故,我们可以有如下的结论

    FileName[n][x][k][y]中,n是第n个图像集(比方这里有共61有类),x是只能取0,因为file_list只有1列。k是第k个图片。y也只能取0.

    所以,我们想第1类的所有图片名字程序如下:

    for x in FileName[0][0]:
        print x[0][0]
    改成如下可以遍历所有训练样本的名字。
    for k in range(61):
        for x in FileName[k][0]:
            print x[0][0]
    同样,对于坐标的标签页可以这样读。会处理.mat数据后就是如何用opencv处理图片了。

    ---------------------------------------------------------------------------------------------------------------------------
    这一部分涉及到的操作也不多,首先把cv2这个模块import进来。

    import cv2
    还用到把把图片读进来。
    cv2.imread("path")
    用图片按区域裁剪

    crop=img[row:col]

    最后是把图片保存

    cv2.imwrite("path",crop)
    ------------------------------------------

    最后附上程序的最关键的一部分,(简单版)。

    noicecount=0
    count=0
    TIMES=0
    index=0
    picNum=0
    RandCor=[]
    FaceCor=[]
    data=scipy.io.loadmat("val.mat")
    FileName=data['file_list']
    FileValue=data['face_bbx_list']
    FileOcc=data['occlusion_label_list']
    
    for step in range(61):
        log=open("log.txt",'w')
        for (i,j,p) in zip(FileName[step][0],FileValue[step][0],FileOcc[step][0]):
            newstring=FindAddress(step)
            print "THE k is",step
            if(newstring==0):
                continue
            newstring=newstring+i[0][0]+'.jpg'
            print newstring
            img=cv2.imread(newstring)
            if(img==None):
                continue
            FaceCor=[]
            for k in range(j[0].shape[0]):
                if int(j[0][k][2])<=50 and int(j[0][k][3])<=50 or p[0][k]!=0:
    		        continue
                crop=img[int(j[0][k][1]):int(j[0][k][1])+int(j[0][k][3]),int(j[0][k][0]):int(j[0][k][0])+int(j[0][k][2])]
                count+=1
                filename="E:/photo2/face"+str(count)+".jpg"     
                cv2.imwrite(filename,crop)			
                print count			
                FaceCor=FaceCor+[j[0][k]]
            print FaceCor
            if(FaceCor!=[]):
                picNum=0		
                RandCor=RandomClipPhoto(FaceCor,img.shape[1],img.shape[0])
                for w in range(len(RandCor)): 
                    if(picNum==4):
                        break                
                    picNum+=1
                    crop2=img[RandCor[w][1]:RandCor[w][1]+RandCor[w][3],RandCor[w][0]:RandCor[w][0]+RandCor[w][2]]
                    filename2="E:/random2/noice"+str(noicecount)+".jpg"
                    noicecount+=1            
                    cv2.imwrite(filename2,crop2)		
            TIMES+=1# the processing image num
        log.write(i[0][0]+"  finish")
        log.close()
    

    -----------------------------------------------------------------------------------

    这是效果图(由于数据集处理完后一共有29000+的人脸数据,所以这里就不放数据集了,有需要的可以评论留言。)





    展开全文
  • 在机器学习中,mnist数据集是一个使用很广泛的数据集,一般教程中都是python对mnist数据集的解析,在本文中将采用C++语言进行手写数据集的数据提取。 环境准备: vs2015 OpenCV4.5.0 首先在mnist官网上下载mnist数据...

    在机器学习中,mnist数据集是一个使用很广泛的数据集,一般教程中都是python对mnist数据集的解析,在本文中将采用C++语言进行手写数据集的数据提取。
    环境准备:
    vs2015
    OpenCV4.5.0

    首先在mnist官网上下载mnist数据集的压缩包。
    在这里插入图片描述
    下载完成后将压缩包解压得到idx3-ubyte格式文件,如下图所示:
    在这里插入图片描述
    下面代码为C++版解析代码:

    #include<iostream>
    #include<opencv.hpp>
    #include <string>
    #include <fstream>
    using namespace std;
    using namespace cv;
    
    
    //小端存储转换
    int reverseInt(int i);
    //读取image数据集信息
    Mat read_mnist_image(const string fileName);
    //读取label数据集信息
    Mat read_mnist_label(const string fileName);
    
    string train_images_path = "G:/vs2015_opencv_ml/mnist/train-images.idx3-ubyte";
    string train_labels_path = "G:/vs2015_opencv_ml/mnist/train-labels.idx1-ubyte";
    
    int main()
    {
    	//读取标签数据 (60000,1) 类型为int32
    	Mat train_labels = read_mnist_label(train_labels_path);
    	//打印第一个标签
    	Mat label0 = train_labels.rowRange(0, 1);
    	cout << "第一个标签:" << label0 << endl;
    
    
    	//读取图像数据 (60000,784) 类型为float32 数据未归一化
    	Mat train_images = read_mnist_image(train_images_path);
    
    	//取出第0张图像
    	Mat img0 = train_images.rowRange(0, 1);//(1,784)
    	//改变形状为(28,28)
    	img0 = img0.reshape(1, 28);
    	//显示图像
    	cv::imshow("test", img0);
    	cv::waitKey(0);
    
    	getchar();
    	return 0;
    }
    
    
    ;
    
    int reverseInt(int i) {
    	unsigned char c1, c2, c3, c4;
    
    	c1 = i & 255;
    	c2 = (i >> 8) & 255;
    	c3 = (i >> 16) & 255;
    	c4 = (i >> 24) & 255;
    
    	return ((int)c1 << 24) + ((int)c2 << 16) + ((int)c3 << 8) + c4;
    }
    
    Mat read_mnist_image(const string fileName) {
    	int magic_number = 0;
    	int number_of_images = 0;
    	int n_rows = 0;
    	int n_cols = 0;
    
    	Mat DataMat;
    
    	ifstream file(fileName, ios::binary);
    	if (file.is_open())
    	{
    		cout << "成功打开图像集 ..." << endl;
    
    		file.read((char*)&magic_number, sizeof(magic_number));//幻数(文件格式)
    		file.read((char*)&number_of_images, sizeof(number_of_images));//图像总数
    		file.read((char*)&n_rows, sizeof(n_rows));//每个图像的行数
    		file.read((char*)&n_cols, sizeof(n_cols));//每个图像的列数
    
    		magic_number = reverseInt(magic_number);
    		number_of_images = reverseInt(number_of_images);
    		n_rows = reverseInt(n_rows);
    		n_cols = reverseInt(n_cols);
    		cout << "幻数(文件格式):" << magic_number
    			<< " 图像总数:" << number_of_images
    			<< " 每个图像的行数:" << n_rows
    			<< " 每个图像的列数:" << n_cols << endl;
    
    		cout << "开始读取Image数据......" << endl;
    
    		DataMat = Mat::zeros(number_of_images, n_rows * n_cols, CV_32FC1);
    		for (int i = 0; i < number_of_images; i++) {
    			for (int j = 0; j < n_rows * n_cols; j++) {
    				unsigned char temp = 0;
    				file.read((char*)&temp, sizeof(temp));
    				//可以在下面这一步将每个像素值归一化
    				float pixel_value = float(temp);
    				//按照行将像素值一个个写入Mat中
    				DataMat.at<float>(i, j) = pixel_value;
    			}
    		}
    
    		cout << "读取Image数据完毕......" << endl;
    
    	}
    	file.close();
    	return DataMat;
    }
    
    Mat read_mnist_label(const string fileName) {
    	int magic_number;
    	int number_of_items;
    
    	Mat LabelMat;
    
    	ifstream file(fileName, ios::binary);
    	if (file.is_open())
    	{
    		cout << "成功打开标签集 ... " << endl;
    
    		file.read((char*)&magic_number, sizeof(magic_number));
    		file.read((char*)&number_of_items, sizeof(number_of_items));
    		magic_number = reverseInt(magic_number);
    		number_of_items = reverseInt(number_of_items);
    
    		cout << "幻数(文件格式):" << magic_number << "  ;标签总数:" << number_of_items << endl;
    
    		cout << "开始读取Label数据......" << endl;
    		//CV_32SC1代表32位有符号整型 通道数为1
    		LabelMat = Mat::zeros(number_of_items, 1, CV_32SC1);
    		for (int i = 0; i < number_of_items; i++) {
    			unsigned char temp = 0;
    			file.read((char*)&temp, sizeof(temp));
    			LabelMat.at<unsigned int>(i, 0) = (unsigned int)temp;
    		}
    		cout << "读取Label数据完毕......"<<endl;
    
    	}
    	file.close();
    	return LabelMat;
    }
    
    

    运行程序,执行结果如下:
    在这里插入图片描述

    展开全文
  • Python + OpenCV 深度学习数据集批量规范为 .jpg 1. jpg、jpeg、bmp 统一转换为 .jpg,形成规范统一数据集 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Yongqiang Cheng from __future__ import absolute...
  • digits图像分割后的手写数字图像,可用于数字识别的练习
  • python opencv 制作属于自己的数据集

    千次阅读 2018-08-25 15:31:41
    由于项目需要本人需要自己制作自己的数据集,所以写下。有些数据集可以从网上download下来,又或者从网页爬虫下来,但是自己动手制作自己的数据集又未尝不可,实用性更大。下面是一个简单的利用opencv调用摄像头来...
  • opencv3人脸识别所用到的训练数据集,40个人脸数据,每个人10张照片。
  • OpenCV人脸识别官方数据集,opencv人脸识别库,CC++源码.zip
  • 网上收集来的人脸识别数据集,包含正样本(人脸)和负样本(背景),均有10000张以上图片;可以用来训练haar分类器。
  • 网上收集了正样本800多张,负样本1800张,可以直接跑训练
  • OpenCV对图片数据集提取HOG特征并用SVM进行识别代码编程环境设置图片大小源代码提取HOG源代码SVM识别源代码 代码编程环境 Windows系统; OpenCV3.4.1; Visual studio 2017 设置图片大小源代码 在进行提取HOG...
  • opencv3人脸识别所用到的训练数据集,40个人脸数据,每个人10张照片。
  • opencv人头分类器训练样本数据集

    热门讨论 2014-12-16 12:04:53
    opencv人头分类器训练样本数据集 正负样本都要,正样本4000+ 负样本25000+ 归一化为20*20
  • OpenCV人脸识别用到的txt文件,里面有样本的绝对路径和标签,如果不想自己生成,拿这个能文件,把路径换成自己的路径就可以了。
  • OpenCV SVM对MNIST手写数据集进行分类,更加详细的讲解请看博客: http://blog.csdn.net/wblgers1234/article/details/73477860
  • 人愿意将自己照片给人家做数据集),于是就用自己造数据集,但是拍照拍几百 张训练效果不好,也嫌麻烦,干脆就是视频取帧的方式,在这之前使用专门的软 件。不过opencv自带了视频处理的API,详细代码如下: 二、...
  • 注意:使用opencv自带的...大体步骤:收集样本(正、负样本)——制作标签文件——训练样本——获得xml数据集 下面开始方法步骤: 在安装的opencv的bin文件夹里创建三个空白文件夹,分别是negative、positive、xml
  • mnist数据集是以二进制形式保存的,这里借助OpenCV把mnist数据集转换成图片格式。转换程序如下: #include #include #include #include #include using namespace cv; using namespace std; int main() { ...
  • opencv4.0现在支持调用TensorFlow,这是opencv4.0实现mask rcnn的训练数据集.
  • 该样本数据集包含4300张正样本和23000张负样本。训练出来的模型可靠性强,正样品尺寸已resize
  • Python-OpenCV人脸识别之数据集生成

    千次阅读 2019-03-13 19:54:32
    比如说,我们的识别器需要识别两个人,一个人的id是1,而另一个的id是2,于是在数据集里面,1号人的所有照片会有id 1号,2号人同理。然后我们就会使用这些数据集照片去训练识别器,再从一个视频中识别出1号人。 ...
  • 识别狗的分类器数据集,包含已处理正样本100张(尺寸同意等)和未处理负样本210张,图像均已按照固定格式标注
  • opencv中mask图像合成扩充数据集

    千次阅读 2016-12-26 15:35:44
    opencv扩充图像训练数据集,图像合成。
  • 参考:OpenCV-Python中文教程 1.扩展缩放 只是改变图像的尺寸大小,cv2.resize()可以实现这个功能。在缩放时推荐cv2.INTER_AREA,在拓展时推荐cv2.INTER_CUBIC(慢)和cv2.INTER_LINEAR。默认情况下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,267
精华内容 11,306
关键字:

opencv没有数据集