OpenCV 4.x不再提供IplImage类型支持了?不再支持CvvImage类库?来看具体细节

1、OpenCV 4.x使用C++ 11重构,原则上不建议再使用C语言的函数。

例如IplImage* img;编译会出错,如果非要使用,请新增以下红色的字体,头文件。

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui_c.h> 

2、以前OpenCV低版本的Mat和IplImage可以互相转换。但是OpenCV 4.x版本不支持了。CvvImage类库也不能用在OpenCV4。

IplImage是OpenCV中C语言的图像类型;cv::Mat是OpenCV中C++语言的图像类型;
一、Mat—>IplImage
Mat image;
if (!image.data)
{
    cout<<“Could not open or find the image”<<endl;
    return -1;
}

//convert to IplImage
IplImage ipl_img(image);

二、Mat—>IplImage*
IplImage *frame;
Mat Img;
frame=&IplImage(Img);
//*frame=IplImage(Img);

三、IplImage*—>Mat
IplImage* iplimg = cvLoadImage("heels.jpg");
Mat matImg;
matImg = Mat(iplimg);

3、OpenCV 4.x版本的函数cvLoadImage和cvSaveImage是真的没有提供了。

error C3861: “cvLoadImage”: 找不到标识符

......

4、CvvImage类库不能用在OpenCV4。那么OpenCV4和MFC结合,怎么显示图片?请参考教程:

MFC+Opencv4+vs2017 显示图像 详细小白教程(不使用cvvImage)

https://blog.csdn.net/guchensha/article/details/96281384

MFC OpenCV:显示图片的3种方法(详细)

https://blog.csdn.net/qq_34801642/article/details/89945082

上述两篇博客提到了使用Mat与ATL/MFC中的CImage转换的方法。该方法虽然可行,但是当图像分辨率大时,打开图片会很慢。不可取。本人自己实现了一个方法,请参见我的另一篇博客:

我个人实现的MFC+OpenCV4+VS2017对话框打开并显示图像,还能支持ROI矩形框选

 

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值