Inter IPP 处理图像数据的方法

时间:2020-12-31 15:31:50

Inter IPP没有读取图片和保存图片的函数,需要结合opencv完成这个功能。

opencv读到图片以后逐个像素点赋值给IPP显然是不可取的,方法如下:

int main(int argc, char *argv[]) {
cv::Mat dst = cv::imread("1.png", CV_LOAD_IMAGE_GRAYSCALE);
//设置roi
IppiSize roi_size = IppiSize();
roi_size.height = dst.rows;
roi_size.width = dst.cols; //数据 pSrcImage IPP存图像数据
Ipp8u *pSrcImage = NULL;
//设置矩阵跨度=0
int Src_StepBytes = ;
pSrcImage = ippiMalloc_8u_C1(dst.cols, dst.rows, &Src_StepBytes);
ippiCopy_8u_C1R((Ipp8u*)dst.data, dst.step[], pSrcImage, Src_StepBytes, roi_size); //pImage将IPP格式转opencv格式
IplImage *pImage = cvCreateImageHeader(cvSize(dst.cols, dst.rows), IPL_DEPTH_8U, );
cvSetData(pImage, (uchar*)pSrcImage, Src_StepBytes); cvNamedWindow("Example", );
cvShowImage("Example", pImage);
cvWaitKey();
cvReleaseImageHeader(&pImage);
cvDestroyWindow("Example");
ippFree(pSrcImage);
return ;
}