opencv解码内存数据

Home / C++ MrLee 2017-1-18 3599

这个玩意儿研究了一天,只因参数较多,错一个都会失败.看源码,查度娘.终于成功搞定了.
下面直接给2个方法,第1种能正常显示,不过数据貌似有些偏差(肉眼看不出来,匹配模板会有误差,估计是直接这样解码有问题)
方法一:
		//方法一:可行,但是图像识别准确率和直接cvLoad的准确率有差别,也就是图片有变化
		IplImage *pBmp = cvCreateImage(cvSize(head.biWidth,abs(head.biHeight)),IPL_DEPTH_8U, nChannel);
		memcpy(pBmp->imageData,bmpData+bmpfilehead+bmpinfohead,head.biWidth*abs(head.biHeight)*nChannel);
		if(head.biHeight>0)cvFlip(pBmp,pBmp);//旋转

方法二:用系统封装好的,解码BMP更准确
//方法二:通过系统方法解压内存数据,数据包含头信息
		CvMat mat = cvMat(abs(head.biHeight),head.biWidth*nChannel,CV_8UC3,bmpData);
		IplImage *pBmp = cvDecodeImage(&mat);

推荐第二个方法

本文链接:https://www.it72.com/11748.htm

推荐阅读
最新回复 (0)
返回