分享

open cv C 错误及经验总结(十一)

 web3佬总图书馆 2019-12-19

1.Stack around the variable 'temp' was corrupted.

可能是temp数组的存取超出范围了

2.

字符串复制函数strcpy()原型 char *strcpy(char *str1,char *str2);作用:把str2指向的字符串(或者说 字符串str2)复制到str1中去返回str1需要头文件string.h
strlen(str1)是计算字符串的长度,不包括字符串末尾的“\0”!!!
strcpy_s和strcpy()函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。三个参数时:errno_t strcpy_s(char *strDestination,size_t numberOfElements,const char *strSource);两个参数时:errno_t strcpy_s(char (&strDestination)[size],const char *strSource); // C++ only
3.unsigned short (十六进制)转十六进制字符串
  1. void CDCMDemolDlgDlg::change(unsigned short in, char out[5])
  2. {
  3. int a[10] = {0};
  4. int i = 0;
  5. int flag = 0; //记录字符串长度
  6. while(in)
  7. {
  8. a[i++] = in%16;
  9. in/=16;
  10. }
  11. flag = i;
  12. stringstream ss; //存储转换后字符串
  13. for(int j = i - 1; j >= 0; j--) //十进制转十六进制
  14. {
  15. //out[4 - j - 1] = char(a[j] + (a[j] < 10 ? '0' : 'A' - 10));
  16. char s = char(a[j] + (a[j] < 10 ? '0' : 'A' - 10));
  17. //ss<<a[j];
  18. ss<<s;
  19. }
  20. ss>>out;
  21. int len = strlen(out);
  22. char temp[5] = '';
  23. switch (len)
  24. {
  25. case 0:
  26. //out = '0000';
  27. strcpy_s(out,5,'0000');
  28. break;
  29. case 1:
  30. memset(temp,5,0);
  31. strcpy(temp,'000');
  32. strcat(temp,out);
  33. memset(out,5,0);
  34. strcpy_s(out,5,temp);
  35. break;
  36. case 2:
  37. memset(temp,5,0);
  38. strcpy(temp,'00');
  39. strcat(temp,out);
  40. memset(out,5,0);
  41. strcpy_s(out,5,temp);
  42. break;
  43. case 3:
  44. memset(temp,5,0);
  45. strcpy(temp,'0');
  46. strcat(temp,out);
  47. memset(out,5,0);
  48. strcpy_s(out,5,temp);
  49. break;
  50. case 4:
  51. break;
  52. }
  53. }
定义变量
unsigned short tag = 0x0089;
char conver[5] = {0};
函数调用
change(tag,conver);
输出conver = “0089”EVR, Endorcardial Viability Ratio 缩略语,心内膜下活力率,医学名词。 相关名词,ERP,Endocardial Return Percentage缩略语,复苏比,医学名词。
知识补充:
CT与MRI是两种截然不同的检查方法。MRI是Magnetic Resnane Iamge的简称,中文为磁共振成像。 MRI是把人体放置在一个强大的磁场中,通过射频脉冲激发人体内氢质子,发生核磁共振,然后接受质子发出的核磁共振信号,经过梯度场三个方向的定位,再经过计算机的运算,构成各方位的图像。 CT由于X线球管和探测器是环绕人体某一部位旋转,所以只能做人体横断面的扫描成像,而MRI可做横断、矢状、冠状和任意切面的成像。 MRI由不同的扫描序列可形成各种图像,如T1加权像、T2加权像、质子密度像等,还有水成像、水抑制成像、脂肪抑制、弥散成像、波谱成像、功能成像等,CT只能辨别有密度差的组织,对软组织分辨力不高而MRI对软组织有较好的分辨力,如肌肉、脂肪、软骨、筋膜等信号不同。所以CT与MRI是截然不同的检查方法。 MRI提供的信息量不但大于医学影像学中的其他许多成像术,而且不同于已有的成像术,因此,它对疾病的诊断具有很大的潜在优越性。它可以直接作出横断面、矢状面、冠状面和各种斜面的体层图像,不会产生CT检测中的伪影;不需注射造影剂;无电离辐射,对机体没有不良影响。MRI对检测脑内血肿、脑外血肿、脑肿瘤、颅内动脉瘤、动静脉血管畸形、脑缺血、椎管内肿瘤脊髓空洞症和脊髓积水等颅脑常见疾病非常有效,同时对腰椎椎间盘后突、原发性肝癌等疾病的诊断也很有效。 MRI也存在不足之处。它的空间分辨率不及CT,带有心脏起搏器的患者或有某些金属异物的部位不能作MRI的检查,另外价格比较昂贵。
4.stringstream的用法:
http://www./Sandywin/archive/2007/07/13/27984.html
5.string cstring 的用法区别:
http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html
6.DcmItem Class Reference
http://support./docs/classDcmItem.html#0151cf24ee7e0615fc5c72a8a152ab34

lib静态链接库与.h头文件关系总结

(1)先看怎么生成lib文件:

假设我有一个.h的头文件中含有ABC函数的声明。一个.cpp文件含有ABC函数的定义。把你要做成LIB库文件的.cpp扩展文件另存,新建一个Win32StaticLibrary工程然后把这个.cpp文件加入到工程中,点编译编译成.lib库,编译成功后可以在DEBUG文件夹中找到对应的lib文件,以上方法使用VC6.0。

(2)lib库代替了.cpp文件,想要在别的函数中调用ABC函数,也就必须在工程属性中添加lib依赖项和lib文件所在目录。

(3)静态链接库的使用

将下列语句添加到头文件中:

#pragma comment(lib,'ABC.lib'),之前要确认ABC.lib是否在当前的目录下,或者在VC指定的LIB库的路径中。你也可以手动添加自己的LIB库的路径,方法如下:

工具--〉选项--〉Directory --〉 在Include file中添加include 头文件的路径,在Library file中添加LIB库的路径。

然后再像上边那样写,就不用担心路径的问题了,当然,头文件还是要包含的。

const 的使用:
二级指针的使用:
BMP图像的结构及读取:
题5:如果交换一个矩阵中的两行,行空间和零空间不变,列空间和左零空间改变
题6:为什么向量v=(1 2 3)不能同时为一个矩阵的行向量和零空间的一个向量,即v为什么不能同时存在于行空间和零空间。行空间和零空间的交集只有零向量。实际上,零空间与行空间正交
若干同维数的列向量(或同维数的行向量)所组成的集合叫做向量组。例如一个m*n矩阵的全体列向量是一个含n个m维列向量的向量组,它的全体行向量是一个含m个n维行向量的向量组。(A是m*n的向量组)又如线性方程组Ax = 0的全体解,当R(A)《n时是一个含无限多个n维列向量的向量组。(即它的解向量有无限多个)
第三章
Am*nBn*l = O,则R(A)+R(B)《=n

有实数元素的m × n 矩阵行空间Rn的由这个矩阵的行向量生成的子空间。它的维度等于矩阵的秩,最大为min(m,n)。

有实数元素的m × n 矩阵列空间Rm的由这个矩阵的列向量生成的子空间。它的维度等于矩阵的秩,最大为min(m,n)。

如果把矩阵当作从RnRm线性变换,则矩阵的列空间等于这个线性变换的

矩阵A的列向量是所有A的纵列的线性组合。如果A = [a1, ...., an],则Col A = Span {a1, ...., an}。

行空间的概念推广到了在任何上的矩阵,特别是复数C

在直觉上,给定一个矩阵A,矩阵A在向量x上的动作返回A的行向量经由x加权的一个线性组合,另外一种理解是:(1)首先投影x到A的行空间,(2)进行可逆的变换,(3)把结果向量y放置到A列空间中。所以结果的 y =A x必定居留在A的列空间中。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多