区块链技术一般用于构建交易系统,而且要保证交易的信息真实可信,可追踪且不可篡改。每一次交易的信息被确认后存储在一个区块中,区块信息通过散列技术加密,以保证信息不被篡改。这些区块按时间顺序构成链条。每个节点都保有完整的区块链信息,个别节点的信息损坏,不会对区块链信息产生影响。这种信息记录方式被称作分布式账本。
区块链是一种特殊的分布式数据库,任何服务器都可以成为区块链中的一个节点,且节点之间是平等的,无中心化,区块链中的数据是经过加密存储,已经存储的数据无法修改,可以保证数据的准确性。
auto input=net->getSessionInput(session,NULL);
auto output=net->getSessionOutput(session,NULL);
auto dims=input->shape();
int bpp=dims[1];
int size_h=dims[2];
int size_w=dims[3];
auto inputPatch=argv[2];
FREE_IMAGE_FORMAT f=FreeImage_GetFileType(inputPatch);
FIBITMAP*bitmap=FreeImage_Load(f,inputPatch);
auto newBitmap=FreeImage_ConvertTo32Bits(bitmap);
auto width=FreeImage_GetWidth(newBitmap);
auto height=FreeImage_GetHeight(newBitmap);
FreeImage_Unload(bitmap);
Matrix trans;
//Dst->[0,1]
trans.postScale(1.0/size_w,1.0/size_h);
//Flip Y(因为FreeImage解出来的图像排列是Y方向相反的)
trans.postScale(1.0,-1.0,0.0,0.5);
//[0,1]->Src
trans.postScale(width,height);
ImageProcess::Config config;
config.filterType=NEAREST;
float mean[3]={103.94f,116.78f,123.68f};
float normals[3]={0.017f,0.017f,0.017f};
::memcpy(config.mean,mean,sizeof(mean));
::memcpy(config.normal,normals,sizeof(normals));
config.sourceFormat=RGBA;
config.destFormat=BGR;
std::shared_ptr<ImageProcess>pretreat(ImageProcess::create(config));
pretreat->setMatrix(trans);
pretreat->convert((uint8_t*)FreeImage_GetScanLine(newBitmap,0),width,height,0,input);
net->runSession(session);