问题
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
;
修改为:
#if CV_MAJOR_VERSION > 3
IplImage ipl
= cvIplImage(m
);
#else
IplImage temp
= img
;
#endif
参考
https://blog.csdn.net/gzxb1995/article/details/106043437/