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;
}

 

相关文章:

  • 2021-04-20
  • 2021-11-19
  • 2021-12-09
  • 2021-05-02
  • 2022-01-10
  • 2021-06-12
  • 2021-12-04
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-05
  • 2022-12-23
  • 2022-03-02
  • 2021-10-12
  • 2022-12-23
相关资源
相似解决方案