OpenCV中Mat、Ipllmage以及Halcon中Hobject数据类型之间转换

OpenCV中Mat、CVMat、Ipllmage类型都可以代表和显示图像。IplImage是由CVMat派生,而CvMat由CvArr派生即CvArr -> CvMat -> IplImage,Mat类型则是C++版本的矩阵类型(CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理)。

Mat类型侧重于计算,数学性较高; 而CvMat和IplImage类型更侧重于“图像”,如缩放、单通道提取、图像阈值操作等进行了优化。

IplImage 转 Mat:

IplImage* image = cvLoadImage("lena.jpg");

Mat mat = cvarrToMat(image);

Mat 转 IplImage:

IplImage img = IplImage(mat);

以上两种属于浅拷贝,只创建图像头文件,没有进行数据拷贝

//Hobject to IplImage(Opencv中的Mat转换为Halcon中的HObject)

cv::Mat HImageToIplImage(HObject &Hobj)

{

        //get_grayval(Image : : Row, Column : Grayval)

        cv::Mat pImage;

        HTuple htChannels;

        HTuple width, height;

        width = height = 0;

        //转换图像格式

        ConvertImageType(Hobj, &Hobj, "byte");

        CountChannels(Hobj, &htChannels);

        HTuple cType;

        HTuple grayVal;

        if (htChannels.I() == 1)

        

你可能感兴趣的:(opencv,人工智能,计算机视觉,Halcon,格式转换)