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

简介: 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矩形框选


相关文章
|
7月前
|
存储 编译器 数据库
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
|
计算机视觉
OpenCV绘制文字的代码及Mat/IplImage的转换
OpenCV绘制文字的代码及Mat/IplImage的转换
79 0
|
2天前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
|
4天前
|
计算机视觉
OpenCV图像运动模糊
OpenCV图像运动模糊
8 0