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)文章来源:https://www.toymoban.com/news/detail-686797.html
文章来源地址https://www.toymoban.com/news/detail-686797.html
到了这里,关于OpenCV中Mat、Ipllmage以及Halcon中Hobject数据类型之间转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!