OpenCV--常见图片格式转换与深浅拷贝

//派生关系CvArr -> CvMat -> Ipllmage,相互之间可以强制转换,其方法主要有cvLoadImage(),cvShowImage(),cvSaveImage()
//Mat是一套专注矩阵的方法,其主要函数有imread(),imshow(),imwrite()

       读入图片格式为Mat格式,代码略。

        Mat frame;

        //Mat==>IplImage
        IplImage* frame1 = &IplImage(frame);
        IplImage* frame1d = cvCloneImage(frame1);//IplImage深拷贝
        cvShowImage("IplImage", frame1d);


        //IplImage==>Mat
        Mat frame2 = cvarrToMat(frame1);
        Mat frame2d = frame2.clone();//Mat深拷贝
        imshow("CvarrToMat", frame2d);


        //Mat==>IplImage==>CvArr
        IplImage frame3 = IplImage(frame2);//中间需要IplImage转接一下
        CvArr* arr = (CvArr*)&frame3;
        cvShowImage("CvArr", arr);


        //CvArr==> CvMat==> Ipllmage
        cvShowImage("CvArr==>CvMat", (CvMat*)arr);
        cvShowImage("CvArr==>CvMat==>IplImage", (IplImage*)((CvMat*)arr));
        cvShowImage("CvArr==>IplImage", (IplImage*)arr);

 

        以下内容来自:https://blog.csdn.net/wuxiaoyao12/article/details/7305848

        // IplImage*==> BYTE*

        BYTE* data= img->imageData;

        //BYTE*==> IplImage*

        img= cvCreateImageHeader(cvSize(width,height),depth,channels);

        cvSetData(img,data,step);

        //首先由cvCreateImageHeader()创建IplImage图像头,制定图像的尺寸,深度和通道数;

        //然后由cvSetData()根据BYTE*图像数据指针设置IplImage图像头的数据数据,

        //其中step指定该IplImage图像每行占的字节数,对于1通道的IPL_DEPTH_8U图像,step可以等于width。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值