惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

博客园 - 凤凰_1

多边形近似:最小周长多边形算法MPP 多阈值otsu的opencv实现 在Opencv中自定义了一个相位函数,获取复数矩阵的相位 cvIsInf与cvIsNan函数 Mandelbrot set 以parallel_for_实现 opencv的并行操作parallel_for_的问题 CV_WRAP和CV_EXPORTS_W opencv超级像素示例 opencv中自定义的双线性二次插值的图像旋转及缩放 在Qt中,如何在sheets末端添加新的sheet opencv4.x 中的plot函数绘制二维Mat C++版DNN最简主体框架 C++版全连接神经网络 C++版加载MNIST图像集合 c\c++宏定义,四个参数求最大值 - 凤凰_1 - 博客园 自定义c++二维动态数组 用Cmake 编译OpenCV常见的错误 Opencv中的dft()和idft()示例 C++仿Matlab的bsxfun函数
C++版的神经网络训练用的图像集合加载
凤凰_1 · 2022-07-15 · via 博客园 - 凤凰_1

1、构造图像的基本单元类

class ImgUnit
{
public:
    ImgUnit(unsigned char *p)
    {
        for(int i=0;i<3;i++)
        {
            unsigned char *pp=p+1+i*1024;
            m[i]=Mat(32,32,CV_8U,pp);
        }
        merge(m,3,m_bgr);

        label=(int)p[0];
//        imshow("img unit",m_bgr);
    }
    ImgUnit(){}
    void makeImg(unsigned char *p)
    {
        for(int i=0;i<3;i++)
        {
            unsigned char *pp=p+1+i*1024;
            m[(2-i)]=Mat(32,32,CV_8U,pp);
        }
        merge(m,3,m_bgr);

        label=(int)p[0];
    }
    Mat m[3];
    Mat m_bgr;
    int label;
};
//1.加载训练图片
void loadImgSet(ImgUnit *imgset,string datapath)
{
    unsigned char* p=new unsigned char[30730000];
    ifstream infile(datapath,ios::binary);
    if(!infile)
    {
        cerr<<"open err!"<<endl;
        exit(1);
    }
    infile.read((char*)p,30730000);

    for(int i=0;i<10000;i++)

    {
        uchar* pi=p+i*3073;
        imgset[i].makeImg(pi);
    }
    infile.close();
}

2. 测试程序

#include <iostream>
#include<opencv2/opencv.hpp>
#include<myfunction.hpp>
#include<iostream>
#include<fstream>

#include<string.h>
using namespace cv;
using namespace std;


int main()
{
    ImgUnit* imgset=new ImgUnit[10000];

    string datapath="D:/Qt/MyImage/cifar10/data_batch_1.bin";
    loadImgSet(imgset,datapath);

    Mat ms[100];
    Mat implay(640,640,CV_8UC3,Scalar::all(0));


    for(int i=0;i<100;i++)
    {
        resize(imgset[i+100].m_bgr,ms[i],Size(64,64),0,0,INTER_CUBIC);
        int y=i/10,x=i%10;
        Mat temp=implay(Rect(x*64,y*64,64,64));
        ms[i].copyTo(temp);
    }
    imshow("100 image",implay);
    waitKey();

    delete [] imgset;

    return 0;
}

运行结果如下,显示了一百幅图像,说真的,我人眼都识别不了,不知道机器式怎么识别的:)  :