调试小程序-个人-勿看

本文介绍了调试小程序的技巧,并探讨了Markdown的扩展功能,包括快捷键、代码块、数学公式和UML图的使用。此外,还提到了离线写博客、浏览器兼容性以及丰富的编辑器功能。
摘要由CSDN通过智能技术生成

调试小程序

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值