s********z 发帖数: 5411 | 1 大家好,
我在想办法一些图像从camera写到内存,最后再存到硬盘里。
我刚开始学,很多地方不太懂,请大家帮帮忙。
我的思路大概就是,先申请存储一幅图像的内存(指针pic12),再申请存储所有1000幅
图像的内存(指针picAll). 然后让pic12指向picAll的起点。 接着开始采集图像,每采
集到一幅图像就用pic12写到picAll里面,然后pic12再向下移动一个frame. 采集完所
有图像以后,再全部用fwrite写到硬盘里。
关于指针,我不知道我用 pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes)) 分配内
存以后,再用pic12++的话,指针会不会移动一个frame(2*iXRes*iYRes bytes)?
另外,一次用 GlobalAlloc 申请357M的内存不知道会不会有问题, 我用的系统是XP
professional,机器装了4G的内存。
这样做行不行。 大家帮忙看看,感激不尽!
int NumFrames=100; //Number of all frames
FILE *fp;
if( (fopen_s(& | z*y 发帖数: 193 | 2 你既然已经分配了一个大的内存(picAll),就没有必要再分配一幅图像的内存了。
pic12++是不会移动一个frame的,而是一个WORD(如果pic12定义为WORD指针)。所以
你下面的code中 "if((pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes))==NULL)
return 0;"
是多余的。每写完一幅图像后,用pic12 += iXRes*iYRes 将指针移到下一幅图像的写
入起始地址即可。
分配357M的内存不会有问题的。
【在 s********z 的大作中提到】 : 大家好, : 我在想办法一些图像从camera写到内存,最后再存到硬盘里。 : 我刚开始学,很多地方不太懂,请大家帮帮忙。 : 我的思路大概就是,先申请存储一幅图像的内存(指针pic12),再申请存储所有1000幅 : 图像的内存(指针picAll). 然后让pic12指向picAll的起点。 接着开始采集图像,每采 : 集到一幅图像就用pic12写到picAll里面,然后pic12再向下移动一个frame. 采集完所 : 有图像以后,再全部用fwrite写到硬盘里。 : 关于指针,我不知道我用 pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes)) 分配内 : 存以后,再用pic12++的话,指针会不会移动一个frame(2*iXRes*iYRes bytes)? : 另外,一次用 GlobalAlloc 申请357M的内存不知道会不会有问题, 我用的系统是XP
| s********z 发帖数: 5411 | 3 thanks a lot.
I successfully saved the images!
【在 z*y 的大作中提到】 : 你既然已经分配了一个大的内存(picAll),就没有必要再分配一幅图像的内存了。 : pic12++是不会移动一个frame的,而是一个WORD(如果pic12定义为WORD指针)。所以 : 你下面的code中 "if((pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes))==NULL) : return 0;" : 是多余的。每写完一幅图像后,用pic12 += iXRes*iYRes 将指针移到下一幅图像的写 : 入起始地址即可。 : 分配357M的内存不会有问题的。
|
|