我正在移植一些我为 iOS 上的 openCV 编写的 opencv 代码。我对为什么语法完全不同感到困惑,考虑到它们都是用 c++ 编写的,在相同版本的 openCV(2.4.3)下。
我正在尝试使用一些数组处理方法,例如这个
//iOS Code
cv::Mat image;//this comes from each live frame from the camera
float m[] = { 1.0, 2.0, 1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 1.0};
cv::Mat kernel = cv::Mat(3, 3, CV_32F, m);
int ddepth = -1;
cv::filter2D(image, image, ddepth, kernel);
这可以在 iOS 上编译并正常工作。当复制到 Android 环境时,它声称我需要使用输入数组和输出数组,而不是 cv::Mat。我试过像这样铸造它们
cv::filter2D((InputArray)image, (OutputArray)image, ddepth, kernel);
并且可以编译,但由于转换不正确而在运行时失败。有人可以帮我理解这种差异,或者如何解决它吗?