定义一个函数,该函数分析图像中精子细胞的形态。我将该函数封装成dll,以便完成VB对VC的调用。
程序定义3个20*1000的数组edge1~3,分别存放每个细胞的整体边界坐标、头部边界坐标和顶体边界坐标,行表示细胞的标号。8个20的数组,存放每个细胞的信息。
问题1:对图片1.bmp进行处理的时候,出现
三个数组只有一个长度正确,且该数组中只有第一行有数据,其余行数据全为0.其余一维数组中只有最后一个长度正确,且有三个数据。
edge1说明只识别出1个细胞,但diffangele说明有三个细胞角度差,实际上,图像中有3个细胞。
问题2:对图片2.bmp进行处理
如图可知,图像中有四个细胞,此处7个一维数组里都显示出4个细胞的信息,但是二维边界数组只有第一个edge1有数据,且只有一个细胞的数据,tailwidth没信息。
除此之外,运行到该函数时,出现问题:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
单步也可以运行下去。
问题3:对4.bmp进行处理
问题4:对于6.bmp,有两个细胞,所有数组长度正确,一维数组里皆有两个细胞的信息,但是二维边界数据里确只有一个细胞的信息。
总之,所有的边界数组1,只有一个细胞的信息。
和项目负责人一起研究了下,是边界数组定义的长度小了,真是要笑死了,这个错误犯得,唉,又给自己上了一课。写程序一定要仔细。