使用opencv4.4出现error: conversion from ‘cv::Mat’ to non-scalar type ‘IplImage {aka

it2025-12-26  6

问题

error: conversion from ‘cv::Mat’ to non-scalar type ‘IplImage {aka _IplImage}’ requested IplImage ipl = m; ^ CMakeFiles/slic.dir/build.make:81: recipe for target 'CMakeFiles/slic.dir/main.cpp.o' failed make[2]: *** [CMakeFiles/slic.dir/main.cpp.o] Error 1 CMakeFiles/Makefile2:94: recipe for target 'CMakeFiles/slic.dir/all' failed make[1]: *** [CMakeFiles/slic.dir/all] Error 2 Makefile:102: recipe for target 'all' failed make: *** [all] Error 2

原因

opencv4.2.0开始不再支持Mat类型到IplImage类型的转换。

IplImage: 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为重要的一个结构;

在之前的图像表示用IplImage,而且之前的OpenCV是用C语言编写的,提供的接口也是C语言接口;

Mat:

Mat是后来OpenCV封装的一个C++类,用来表示一个图像,和IplImage表示基本一致,但是Mat还添加了一些图像函数;

解决

IplImage ipl = m;

修改为:

//IplImage ipl = m; #if CV_MAJOR_VERSION > 3 IplImage ipl = cvIplImage(m); #else IplImage temp = img; #endif

参考

https://blog.csdn.net/gzxb1995/article/details/106043437/

最新回复(0)