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 = 0; pSrcImage = ippiMalloc_8u_C1(dst.cols, dst.rows, &Src_StepBytes); ippiCopy_8u_C1R((Ipp8u*)dst.data, dst.step[0], pSrcImage, Src_StepBytes, roi_size); //pImage将IPP格式转opencv格式 IplImage *pImage = cvCreateImageHeader(cvSize(dst.cols, dst.rows), IPL_DEPTH_8U, 1); cvSetData(pImage, (uchar*)pSrcImage, Src_StepBytes); cvNamedWindow("Example", 1); cvShowImage("Example", pImage); cvWaitKey(0); cvReleaseImageHeader(&pImage); cvDestroyWindow("Example"); ippFree(pSrcImage); return 0; }