414 lines
16 KiB
C++
414 lines
16 KiB
C++
|
||
#include <fstream>
|
||
#include <cstring>
|
||
#include <stdio.h>
|
||
//#include "ap_utils.h"
|
||
#include <iostream>
|
||
#include "peakCentering.h"
|
||
#include "../../globals/tbGlobals.h"
|
||
|
||
void save_bmp_2(
|
||
const char* filename,
|
||
std::vector<Luma_rgnData>& testSamples)
|
||
{
|
||
FILE* file;
|
||
#if defined(__linux__)
|
||
file = fopen(filename, "wb");
|
||
#else
|
||
fopen_s(&file, filename, "wb");
|
||
#endif
|
||
if (!file) {
|
||
printf("闂傚倷娴囧▔鏇㈠窗閹炬剚鐒藉Δ锝呭暙缁<EFBFBD>鍕煏閸繃顥滄い蹇撶埣濮婅櫣鎹勯妸銉︾<EFBFBD>鹃梺鍝勵儏椤兘鐛箛娑欏<EFBFBD>婚柤鎭掑劜濞呫垺绻涢幘鏉戞惛闁稿孩濞婃俊瀵革拷锝庡枛缁狀垶鏌ㄩ悤鍌涘 %s\n", filename);
|
||
return;
|
||
}
|
||
|
||
// 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垶鏌i幋锝呅撻柡鍛倐閺岋繝宕掑Ο鐚存嫹閺嶎偓鎷峰杈ㄥ殌鐞氭瑩鐓崶銊р檨闁哄懏鎮傞弻锟犲磼濡尨鎷烽弽顐嫹濮橆剛绉洪柡灞诲姂閹垽宕ㄦ繝鍕磿闂備礁缍婇ˉ鎾诲礂濮楋拷瀵偊骞樼拠鍙夘棟闂侀潧鐗嗗Λ妤咁敂閸撲胶纾奸柣鎰靛墯閸婃劙鏌℃担瑙勫磳鐎殿噮鍓熸俊鍫曞幢濡ゅ﹣绱﹂梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷<E599A6>
|
||
int bytes_per_row = RGN_DATA_WIN_SIZE * 3; // 婵犳鍣徊鐣屾崲濮楋拷瀵偊骞樼拠鍙夘棟闂侀潧鐗嗗Λ妤咁敂閸洘鈷戦悹鎭掑妼閺嬫垿鏌$<E98F8C>n亶鐓兼鐐茬箻閹粓鎳為妷锔筋仧闂備礁鎼崐鍫曞磹閺嶎偓鎷峰鐐3闂傚倷娴囧▔鏇㈠窗閺団偓锟戒礁顭ㄩ崼鐔锋疅闂佺鐭夋俊鍥╃矓閸洘鐓欏瀣瘎娑撶兒闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垶鏌ㄩ悤鍌涘
|
||
int padding = (4 - (bytes_per_row % 4)) % 4;
|
||
int row_size = bytes_per_row + padding;
|
||
int height = testSamples.size();
|
||
|
||
// 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垳锟界懓瀚伴崑濠傤焽濡ゅ懏鈷戦悹鎭掑妼閺嬫垿鏌$<E98F8C>n亶鐓兼鐐茬箻閹粓鎳為妷锔筋仧濠电偞鎸婚崫搴ㄥ磿閹惰棄违閻庯綆鍠栫粻顖滐拷鐟板閸╁洦绂掗敓锟<E69593>
|
||
BMPFileHeader file_header = {
|
||
.file_type = 0x4D42, // 'BM'
|
||
.file_size = sizeof(BMPFileHeader) + sizeof(BMPInfoHeader) + row_size * height,
|
||
.reserved1 = 0,
|
||
.reserved2 = 0,
|
||
.offset_data = sizeof(BMPFileHeader) + sizeof(BMPInfoHeader)
|
||
};
|
||
// 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垳锟界懓瀚伴崑濠傤焽濡ゅ懏鈷戦悹鎭掑妼閺嬫垿鏌$<E98F8C>n亶鐓兼鐐茬箻閹粓鎳為妷锔筋仧闂備礁鎼崐鍫曞磹閺嶎偓鎷峰顒傜Ш妤犵偘绶氶、娑橆潩閵夈倗鐭<E58097>
|
||
BMPInfoHeader info_header = {
|
||
.size = sizeof(BMPInfoHeader),
|
||
.width = RGN_DATA_WIN_SIZE,
|
||
.height = height, // 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垶鏌i幋锝呅撻柡鍛倐閺岋繝宕掑Ο鐚存嫹閺嶎偓鎷峰顒傜Ш闁哄被鍔戦幃銏ゅ川婵犲嫪绱曢梻浣告贡閸忔﹢藟閹捐桅婵鍩栭悡銉╂煟閺傛寧鍟為柣蹇e櫍閺岀喐顦版惔鈥冲箣闂佽桨鐒﹂幑鍥ь嚕椤掑嫬围闁糕剝顨忔导鎾绘⒒娴h姤纭堕柛鐘冲姍瀵憡绻濆顒傤唵闂佺粯鍨兼慨銈夊疾閹间焦鐓欓柛锔诲幗閻掑潡鏌熷ú璁抽偗妤犵偛绻橀幃婊堟嚍閵夛附顏熼梻鍌欒兌閸嬫挻绔熼崱娑栵拷鍌烆敋閿熶粙鐛箛娑欏<E5A891>婚柤鎭掑劜濞呫垽姊洪崫鍕拷鍫曞磹閺嶎偓鎷峰顒傜Ш闁哄被鍔戦幃銏ゅ川婵犲嫪绱曢梻浣哥秺椤ユ捇宕楀锟藉顐﹀箻鐠囧弶顥濋梺闈涚墕濡顢旈敓锟<E69593>
|
||
.planes = 1,
|
||
.bit_count = 24,
|
||
.compression = 0,
|
||
.size_image = (uint32_t)(row_size * height),
|
||
.x_pixels_per_meter = 0,
|
||
.y_pixels_per_meter = 0,
|
||
.colors_used = 0,
|
||
.colors_important = 0
|
||
};
|
||
|
||
// 闂備礁鎲¢崝鏍偡閳哄懎鏋侀柟鎹愵嚙濡﹢鏌曢崼婵囶棞妞ゅ繗娉涢…鍧楁嚋閸偄鍞夐梺杞扮劍閹瑰洤顕i鍕ч柛鈩冾殢娴兼捇姊虹拠鈥冲伎闁瑰嚖鎷<E59A96>
|
||
fwrite(&file_header, 1, sizeof(BMPFileHeader), file);
|
||
fwrite(&info_header, 1, sizeof(BMPInfoHeader), file);
|
||
|
||
// 闂備礁鎲¢崝鏍偡閳哄懎鏋侀柟鎹愵嚙濡﹢鏌曢崼婵囶棞妞ゅ繐鐖煎铏规崉閵娿儲鐎鹃梺鍝勵儏椤兘鐛箛娑欏<E5A891>婚柤鎭掑劜濞呫垽姊洪崫鍕拷鍫曞磹閺嶎偓鎷峰顒傜Ш闁哄被鍔戦幃銏ゅ川婵犲嫪绱曢梻浣哥秺椤ユ捇宕楀锟藉顐﹀箻鐠囪尙顔夐梺鍛婂灟閸婃绮旈崼鏇熺厵濡炲楠搁崢鎾煛娴h宕岀<E5AE95>殿噮鍓熸俊鍫曞幢濡ゅ﹣绱﹂梻鍌欐祰濞夋洟宕伴幇鏉垮嚑濠电姵鑹剧粻顖炴煟閹达絽袚闁哄懏鎮傞弻鐔访虹拠鎻掔缂備線纭搁崳锝夌嵁韫囨稒鍊婚柤鎭掑劜閺嗐垽姊绘担鑺ョ《闁哥姵鎸鹃崚鎺楀传閵夛箑鍘归梻浣哥仢椤戝懘顢旈崼鏇熲拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚<E58096>
|
||
uint8_t padding_bytes[3] = { 0, 0, 0 };
|
||
for (int y = height - 1; y >= 0; y--) {
|
||
for (int x = 0; x < RGN_DATA_WIN_SIZE; x++) {
|
||
uint8_t pixel = (uint8_t)testSamples[y].data[x];
|
||
// 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垳绱掔<E7BBB1>n剚娴嘊闂佸搫顦遍崕鎰板礂濞戞碍瀚婚柣鎴炲嚡R濠碉紕鍋戦崐鏍ь渻娴犲鏋侀柟鎹愵嚙濡﹢鏌曢崼婵囶棞妞ゅ骏鎷<E9AA8F>
|
||
fputc(pixel, file); // B
|
||
fputc(pixel, file); // G
|
||
fputc(pixel, file); // R
|
||
}
|
||
fwrite(padding_bytes, 1, padding, file); // 闂傚倷娴囧▔鏇㈠窗閹版澘鍑犲┑鐘宠壘缁狀垶鏌i幋锝呅撻柡鍛倐閺屻劑鎮ら崒娑橆伓
|
||
}
|
||
|
||
fclose(file);
|
||
}
|
||
|
||
std::vector<Luma_rgnData> readTestFile(
|
||
const char* file,
|
||
int* winSize)
|
||
{
|
||
std::ifstream inputFile(file);
|
||
|
||
int winW = 0;
|
||
std::string strLineTxt;
|
||
getline(inputFile, strLineTxt);
|
||
sscanf(strLineTxt.c_str(), "%x", &winW);
|
||
int size = 0;
|
||
std::vector<Luma_rgnData> testData;
|
||
Luma_rgnData a_line;
|
||
while(getline(inputFile, strLineTxt))
|
||
{
|
||
if (strLineTxt.empty())
|
||
continue;
|
||
|
||
if(size == 0)
|
||
{
|
||
int winRdx, y, Rid, Flag, PeakRltvRdx;
|
||
sscanf(strLineTxt.c_str(), "%04x %04x %04x %01x %02x", &winRdx, &y, &Rid, &Flag, &PeakRltvRdx);
|
||
a_line.WinRdx = (uint16_t)winRdx;
|
||
a_line.y = (uint16_t)y;
|
||
a_line.Rid = (uint16_t)Rid;
|
||
a_line.Flag = (uint8_t)Flag;
|
||
a_line.PeakRltvRdx = (uint8_t)PeakRltvRdx;
|
||
for(int n = 0; n < RGN_DATA_WIN_SIZE; n ++)
|
||
a_line.data[n] = 0;
|
||
size = 1 ;
|
||
}
|
||
else //receive Data
|
||
{
|
||
int data;
|
||
sscanf(strLineTxt.c_str(), "%02x", &data);
|
||
a_line.data[size -1] = (uint8_t)data;
|
||
if(size >= 16)
|
||
{
|
||
testData.push_back(a_line);
|
||
size = 0;
|
||
}
|
||
else
|
||
size ++;
|
||
}
|
||
|
||
}
|
||
inputFile.close();
|
||
return testData;
|
||
}
|
||
|
||
void genTestSream(
|
||
std::vector<Luma_rgnData>& srcData,
|
||
hls::stream<RgnPix>& inStream,
|
||
int LRflag, //0-left image; 1-right image
|
||
const Luma_frameInfo frameInfo)
|
||
{
|
||
RgnPix VSync = {0,0,0,0,0,0,0};
|
||
ap_uint<32> data_32;
|
||
//1st:FrmNo
|
||
data_32 = frameInfo.FrmNo;
|
||
VSync.Sync = 0b10;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH*2-1,CAM4K_Y_WIDTH);
|
||
VSync.LazerWinRid(CAM4K_Y_RSV_BITS*2-1,0) = data_32.range(31,CAM4K_Y_WIDTH*2);
|
||
VSync.LazerWinRid(10,CAM4K_Y_RSV_BITS*2) = 0;
|
||
inStream.write(VSync);
|
||
//2nd:FrmNo
|
||
data_32 = frameInfo.TimeStamp;
|
||
VSync.Sync = 0b00;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH*2-1,CAM4K_Y_WIDTH);
|
||
VSync.LazerWinRid(CAM4K_Y_RSV_BITS*2-1,0) = data_32.range(31,CAM4K_Y_WIDTH*2);
|
||
VSync.LazerWinRid(10,CAM4K_Y_RSV_BITS*2) = 0;
|
||
inStream.write(VSync);
|
||
//3rd:encInfo
|
||
data_32 = frameInfo.encInfo;
|
||
VSync.Sync = 0b00;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = data_32.range(CAM4K_Y_WIDTH*2-1,CAM4K_Y_WIDTH);
|
||
VSync.LazerWinRid(CAM4K_Y_RSV_BITS*2-1,0) = data_32.range(31,CAM4K_Y_WIDTH*2);
|
||
VSync.LazerWinRid(10,CAM4K_Y_RSV_BITS*2) = 0;
|
||
inStream.write(VSync);
|
||
//4th:frmW(12bit), frmH(12bit)
|
||
ap_uint<16> data16_1, data16_2;
|
||
data16_1 = frameInfo.W;
|
||
data16_2 = frameInfo.H;
|
||
VSync.Sync = 0b00;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data16_1.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = data16_2.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinRid(10,0) = 0;
|
||
inStream.write(VSync);
|
||
//5th: frmX, WinNum
|
||
int winNum = (int)srcData.size();
|
||
if(LRflag == 0)
|
||
data16_1 = frameInfo.left_L;
|
||
else
|
||
data16_1 = frameInfo.right_L;
|
||
data16_2 = (uint16_t)winNum;
|
||
VSync.Sync = 0b00;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data16_1.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = data16_2.range(CAM4K_Y_WIDTH-1,0);
|
||
inStream.write(VSync);
|
||
//6th: frmY
|
||
if(LRflag == 0)
|
||
data16_1 = frameInfo.left_T;
|
||
else
|
||
data16_1 = frameInfo.right_T;
|
||
VSync.Sync = 0b00;
|
||
VSync.LazerWinX(CAM4K_Y_WIDTH-1,0) = data16_1.range(CAM4K_Y_WIDTH-1,0);
|
||
VSync.LazerWinY(CAM4K_Y_WIDTH-1,0) = 0;
|
||
inStream.write(VSync);
|
||
//output data
|
||
for(int i = 0; i < winNum; i ++)
|
||
{
|
||
Luma_rgnData* a_line = &srcData[i];
|
||
RgnPix Hsync;
|
||
Hsync.LazerWinX = (ap_uint<CAM4K_Y_WIDTH>)a_line->WinRdx;
|
||
Hsync.LazerWinY = (ap_uint<CAM4K_Y_WIDTH>)a_line->y;
|
||
Hsync.LazerWinRid = (ap_uint<11>)a_line->Rid;
|
||
Hsync.LazerWinFlag = (ap_uint<4>)a_line->Flag;
|
||
Hsync.LazerWinRsv = 0;
|
||
Hsync.RltvRdx = (ap_uint<8>)a_line->PeakRltvRdx;
|
||
Hsync.Sync = 0b01;
|
||
inStream.write(Hsync);
|
||
for(int j = 0; j < RGN_DATA_WIN_SIZE/2; j ++)
|
||
{
|
||
RgnPix a_data = {0,0,0,0,0,0,0};
|
||
ap_uint<8> data8_1, data8_2;
|
||
data8_1 = (ap_uint<8>)a_line->data[j * 2];
|
||
data8_2 = (ap_uint<8>)a_line->data[j * 2 + 1];
|
||
a_data.LazerWinX(7,0) = data8_1.range(7,0);
|
||
a_data.LazerWinX(CAM4K_Y_WIDTH-1, 8) = 0;
|
||
a_data.LazerWinY(7,0) = data8_2.range(7,0);
|
||
a_data.LazerWinY(CAM4K_Y_WIDTH-1, 8) = 0;
|
||
a_data.Sync = 0b00;
|
||
inStream.write(a_data);
|
||
}
|
||
}
|
||
//add Last sync data
|
||
VSync.LazerWinFlag = 0;
|
||
VSync.LazerWinRid = 0;
|
||
VSync.LazerWinRsv = 0;
|
||
VSync.LazerWinX = 0;
|
||
VSync.LazerWinY = 0;
|
||
VSync.RltvRdx = 0;
|
||
VSync.Sync = 0b11;
|
||
inStream.write(VSync);
|
||
return;
|
||
}
|
||
|
||
void convertStreamToArray(
|
||
hls::stream<RgnPix>& streamData,
|
||
std::vector<Luma_rgnData>& arrayData,
|
||
uint32_t* FrmNo,
|
||
uint32_t* timeStamp,
|
||
uint32_t* encInfo,
|
||
uint16_t* frameROI_w,
|
||
uint16_t* frameROI_h,
|
||
uint16_t* frameROI_x,
|
||
uint16_t* frameROI_y)
|
||
{
|
||
//1st:FrmNo
|
||
RgnPix VSync = streamData.read();
|
||
ap_uint<32> data_32;
|
||
data_32(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(CAM4K_Y_WIDTH*2-1, CAM4K_Y_WIDTH) = VSync.LazerWinY.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(31,CAM4K_Y_WIDTH*2) = VSync.LazerWinRid.range(CAM4K_Y_RSV_BITS*2-1,0);
|
||
*FrmNo = (int)data_32;
|
||
//2nd:timeStamp
|
||
VSync = streamData.read();
|
||
data_32(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(CAM4K_Y_WIDTH*2-1, CAM4K_Y_WIDTH) = VSync.LazerWinY.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(31,CAM4K_Y_WIDTH*2) = VSync.LazerWinRid.range(CAM4K_Y_RSV_BITS*2-1,0);
|
||
*timeStamp = (int)data_32;
|
||
//3rd:encInfo
|
||
VSync = streamData.read();
|
||
data_32(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(CAM4K_Y_WIDTH*2-1, CAM4K_Y_WIDTH) = VSync.LazerWinY.range(CAM4K_Y_WIDTH-1,0);
|
||
data_32(31,CAM4K_Y_WIDTH*2) = VSync.LazerWinRid.range(CAM4K_Y_RSV_BITS*2-1,0);
|
||
*encInfo = (int)data_32;
|
||
//4th:frmW(12bit), frmH(12bit)
|
||
VSync = streamData.read();
|
||
ap_uint<16> data16_1, data16_2;
|
||
data16_1(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data16_1(15, CAM4K_Y_WIDTH) = 0;
|
||
data16_2(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinY.range(CAM4K_Y_WIDTH-1,0);
|
||
data16_2(15, CAM4K_Y_WIDTH) = 0;
|
||
*frameROI_w = data16_1;
|
||
*frameROI_h = data16_2;
|
||
//5th: frmX, WinNum
|
||
VSync = streamData.read();
|
||
data16_1(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data16_1(15, CAM4K_Y_WIDTH) = 0;
|
||
data16_2(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinY.range(CAM4K_Y_WIDTH-1,0);
|
||
data16_2(15, CAM4K_Y_WIDTH) = 0;
|
||
*frameROI_x = data16_1;
|
||
uint16_t winNum = (uint16_t)data16_2;
|
||
//6th: frmY
|
||
VSync = streamData.read();
|
||
data16_1(CAM4K_Y_WIDTH-1,0) = VSync.LazerWinX.range(CAM4K_Y_WIDTH-1,0);
|
||
data16_1(15, CAM4K_Y_WIDTH) = 0;
|
||
*frameROI_y = data16_1;
|
||
//output data
|
||
for(int i = 0; i <= winNum; i ++)
|
||
{
|
||
RgnPix Hsync = streamData.read();
|
||
if(Hsync.Sync == 0b11)
|
||
break;
|
||
else if(Hsync.Sync != 0b01)
|
||
continue;
|
||
|
||
Luma_rgnData a_line;
|
||
a_line.WinRdx = (uint16_t)Hsync.LazerWinX;
|
||
a_line.y = (uint16_t)Hsync.LazerWinY;
|
||
if(a_line.y >= 1963)
|
||
int kkk = 1; //debug point
|
||
|
||
a_line.Rid = (uint16_t)Hsync.LazerWinRid;
|
||
a_line.Flag = (uint8_t)Hsync.LazerWinFlag;
|
||
a_line.PeakRltvRdx = (uint8_t)Hsync.RltvRdx;
|
||
for(int j = 0; j < RGN_DATA_WIN_SIZE/2; j ++)
|
||
{
|
||
RgnPix a_data = streamData.read();
|
||
ap_uint<8> data8_1, data8_2;
|
||
data8_1(7,0) = a_data.LazerWinX.range(7,0);
|
||
data8_2(7,0) = a_data.LazerWinY.range(7,0);
|
||
a_line.data[j * 2] = (uint8_t)data8_1;
|
||
a_line.data[j * 2 + 1] = (uint8_t)data8_2;
|
||
}
|
||
arrayData.push_back(a_line);
|
||
}
|
||
return;
|
||
}
|
||
|
||
void writepeakCenteringData(
|
||
const char* fileName,
|
||
std::vector<Luma_rgnData>& outData)
|
||
{
|
||
std::ofstream sw(fileName);
|
||
char str[250];
|
||
#if defined(__linux__)
|
||
sprintf(str, "0x10");
|
||
#else
|
||
sprintf_s(str, "0x10");
|
||
#endif
|
||
sw << str << std::endl;
|
||
int i_max = outData.size();
|
||
for (int i = 0; i < i_max; i++)
|
||
{
|
||
char data[250];
|
||
#if defined(__linux__)
|
||
sprintf(data, "%04x %04x %04x %01x %02x",
|
||
outData[i].WinRdx, outData[i].y, outData[i].Rid, outData[i].Flag, outData[i].PeakRltvRdx);
|
||
#else
|
||
sprintf_s(data, "%04x %04x %04x %01x %02x",
|
||
outData[i].WinRdx, outData[i].y, outData[i].Rid, outData[i].Flag, outData[i].PeakRltvRdx);
|
||
#endif
|
||
sw << data << std::endl;
|
||
for (int j = 0; j < RGN_DATA_WIN_SIZE; j++)
|
||
{
|
||
#if defined(__linux__)
|
||
sprintf(data, "%02x", outData[i].data[j]);
|
||
#else
|
||
sprintf_s(data, "%02x", outData[i].data[j]);
|
||
#endif
|
||
sw << data << std::endl;
|
||
}
|
||
}
|
||
sw.close();
|
||
}
|
||
|
||
int main()
|
||
{
|
||
setvbuf(stdout, NULL, _IONBF, 0); // _IONBF = 无缓冲,立即输出
|
||
TbModule currModule = TB_1_peakCentering;
|
||
for(int n = 0; n < tb_group_count; n ++)
|
||
{
|
||
int winSize = 0;
|
||
int fileStart = tb_groups[n].start_id;
|
||
int fileEnd = tb_groups[n].end_id;
|
||
for(int fi = fileStart; fi <= fileEnd; fi++)
|
||
{
|
||
TbPaths test_path_L;
|
||
int rcode_L = tb_get_paths(currModule, n,fi, 0, &test_path_L);
|
||
TbPaths test_path_R;
|
||
int rcode_R = tb_get_paths(currModule, n,fi, 1, &test_path_R);
|
||
|
||
Luma_frameInfo framwInfo = readParaFile(test_path_L.paras, fi);
|
||
std::vector<Luma_rgnData> testData_L = readTestFile(test_path_L.input, &winSize);
|
||
std::vector<Luma_rgnData> testData_R = readTestFile(test_path_R.input, &winSize);
|
||
|
||
//gen test stream
|
||
hls::stream<RgnPix> inStream_L;
|
||
genTestSream(testData_L, inStream_L, 0, framwInfo);
|
||
hls::stream<RgnPix> inStream_R;
|
||
genTestSream(testData_R, inStream_R, 1, framwInfo);
|
||
|
||
//peakCentering
|
||
hls::stream<RgnPix> outStream_L;
|
||
peakCentering(inStream_L,outStream_L);
|
||
hls::stream<RgnPix> outStream_R;
|
||
peakCentering(inStream_R,outStream_R);
|
||
|
||
//output
|
||
std::vector<Luma_rgnData> outData_L;
|
||
uint32_t outFrmNo_L, outTimeStamp_L, outEncInfo_L;
|
||
uint16_t outROI_w_L,outROI_h_L, outROI_x_L,outROI_y_L;
|
||
convertStreamToArray(
|
||
outStream_L,
|
||
outData_L,
|
||
&outFrmNo_L,
|
||
&outTimeStamp_L,
|
||
&outEncInfo_L,
|
||
&outROI_w_L,
|
||
&outROI_h_L,
|
||
&outROI_x_L,
|
||
&outROI_y_L);
|
||
writepeakCenteringData(test_path_L.output, outData_L);
|
||
//right
|
||
std::vector<Luma_rgnData> outData_R;
|
||
uint32_t outFrmNo_R, outTimeStamp_R, outEncInfo_R;
|
||
uint16_t outROI_w_R,outROI_h_R, outROI_x_R,outROI_y_R;
|
||
convertStreamToArray(
|
||
outStream_R,
|
||
outData_R,
|
||
&outFrmNo_R,
|
||
&outTimeStamp_R,
|
||
&outEncInfo_R,
|
||
&outROI_w_R,
|
||
&outROI_h_R,
|
||
&outROI_x_R,
|
||
&outROI_y_R);
|
||
writepeakCenteringData(test_path_R.output, outData_R);
|
||
|
||
printf("%s ... done\n", test_path_L.input);
|
||
}
|
||
}
|
||
printf("done!\n");
|
||
|
||
}
|