调试小程序
#include <opencv\cv.h>
#include <opencv\highgui.h>
typedef enum _DV_DATA_TYPE
{
DV_UC = 0,
DV_SC,
DV_US,
DV_SS,
DV_UI,
DV_SI,
DV_ST
}DV_DAT_TYPE;
const int g_knTypeSize[] = {
1, 1, 2, 2, 4, 4, 1};
const char g_kchPrintFormat[][5] = {
{
"%uc"},{
"%c"},{
"%hu"},{
"%hd"},{
"%u"},{
"%d"},{
"%s"}};
int MyGetDataVoid(const void * pkData, const int knPos, const DV_DAT_TYPE kemType)
{
switch (kemType)
{
case DV_SC:
return *((char*)(pkData) + knPos);
case DV_UC:
return *((unsigned char*)(pkData + knPos);
case DV_SS:
return *((short*)(pkData)+knPos);
case DV_US:
return *((unsigned short*)(pkData)+knPos);
case DV_SI:
return *((int*)(pkData)+knPos);
case DV_UI:
return *((unsigned int*)(pkData)+knPos);
default:
return 0;
}
}
void MyImShowVoid(const void * pkData, const int knRow, const int knCol, const int knColAll,const char* pkchName, const int knSmallest, const int knLargest, const DV_DAT_TYPE kemType)
{
CvMat* cvDataImage = cvCreateMat(knRow, knCol, CV_64FC1);
const char* pkDataTemp = (const char*)pkData;
fo(int i=0; i<nRow; i++)
{
for(int j=0; j<nCol; j++)
{
int nDataTemp = MyGetDataVoid(pData, i*knColALl + j, kemType);
cvDataImage->data.db[i] = (nDataTemp - nSmallest) / (nLargest - nSmallest);
}
}
cvNameWindow(pkchName, CV_WINDOW_NORMAL);
cvShowImage(pkchName, cvDataImage);
cvResizeWindow(pkchName, 100, 100);
cvMoveWindow(pkchName, cvDataImage);
cvWaitKey(0);
cvReleaseMat(&cvDataImage);
}
int MyReadDataFromCsvVoid(const char* pchFile, void* pData, int * nLength, const DV_DAT_TYPE kemType)
{
FILE * pFile;
char szFormatArr[5] = {
0};
strcpy(szFormatArr, g_kchPrintFormat[kemType]);
strcpy(szFormatArr, ",");
int nTypeSize = g_knTypeSize[kemType];
if(NULL == (pFile = fopen(pchFile, "r")))
{
return 0;
}
int i = 0;
int nMaxLength = (NULL == nLength? 0x7fffffff : *nLength);
while(!feof(pFile) && i < nMaxLength)
{
fscanf_s(pFile, szFormatArr[nTypeFormat],&(char*)pData+nTypeSize*(i++));
}
if(NULL != nLength)
{
*nLength = i - 1;
}
fclose(pFile);
return 1;
}
int MyWriteMatrixCsvVoid(const void* pkData, const int knRow, const int knCol, const int knColAll, const char* pkchDest, const DV_DAT_TYPE kemType)
{
FILE *pFile;
if(NULL == (pFile = fopen(pchFile, "r")))
{
return 0;
}
char szFormatArr[5] = {
0};
strcpy(szFormatArr, g_kchPrintFormat[kemType]);
strcpy(szFormatArr, ",");
int nTypeSize = g_knTypeSize[kemType];
const char * pkDataTemp = (char *)pkData;
int nRow = max(1, knRow);
for(int i = 0; i < nRow ; i++)
{
for(int j = 0; j < knCol; j++)
{
fprintf(pFile, szFormatArr, (char*)pkDataTemp + j * nTypeSize);
}
if(knRow >= 1)
{
fprintf(pFile, "\n");
}
pkDataTemp += knColAll * nTypeSize;
}
}
int MyPrintMatrixVoid(const void* pkData, const int knRow, const int knCol, const int knColAll, const DV_DAT_TYPE kemType)
{
char szFormatArr[5] = {
0};
strcpy(szFormatArr, "4");
strcpy(szFormatArr, g_kchPrintFormat[kemType]);
int nTypeSize = g_knTypeSize[kemType];
const char * pkDataTemp = (char *)pkData;
int nRow = max(1, knRow);
for(int i = 0; i < nRow ; i++)
{
for(int j = 0; j < knCol; j++)
{
MyPrintf(szFormatArr, (char*)pkDataTemp + j * nTypeSize);
}
i