【问题标题】:Bad flag(parameter or structure field) (Unrecognized or unsupported array type) in cvGetMatcvGetMat 中的错误标志(参数或结构字段)(无法识别或不支持的数组类型)
【发布时间】:2018-11-07 17:15:14
【问题描述】:

我想将极坐标网格图像转换为笛卡尔表示。但我一直收到一条奇怪的错误消息:

OpenCV 错误:cvGetMat 中的错误标志(参数或结构字段)(无法识别或不支持的数组类型),文件 M:\libs\OpenCV - 2.4.13x86\sources\modules\core\src\array.cpp,第 2482 行

这是我尽可能简单的代码:

#include<cstdio>
#include <opencv2/opencv.hpp>
#include "opencv2/imgproc.hpp"

int main()
{
    // cv::Mat src = cv::imread("savetest.png"); // _lin_polar_img
    // cv::Mat src = cv::imread("280px_1.png"); // _lin_polar_img
    cv::Mat src = cv::Mat(800, 800, CV_8SC3); // _lin_polar_img
    cv::Mat _recovered_cart_img;

    cv::Point2f center( (float)src.cols / 2.f, (float)src.rows / 2.f );
    double maxRadius = 0.7*std::min(center.y, center.x);

    // cvLinearPolar(const CvArr* src, CvArr* dst, CvPoint2D32f center, double maxRadius, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS )
    cvLinearPolar(&src, &_recovered_cart_img, center, maxRadius, cv::INTER_LINEAR+CV_WARP_INVERSE_MAP);

    system("pause");
    return 0;
}

我在 Windows 10 (VisualC++ 2015) 上使用 OpenCV 2.4.13。

【问题讨论】:

  • 你能升级到 OpenCV 3.x 吗?它有一个 C++ 实现,而不是使用旧数据结构的旧 C 函数。
  • 我无法更改库的版本。我正在一个大项目中开发一个小组件。
  • 您面临的错误来自函数 cvLinearPolar,它是您提供 c++ 结构的 C 函数。 cvArr 与命名空间 cv 中的 Mat 容器没有任何关系。尝试在文档中找到替换它的 c++ 函数(例如 cv::cartToPolar)。

标签: c++ opencv


【解决方案1】:

感谢@John_Sharp1318 的评论,我已经解决了这个问题。我必须使用 Iplimage,它是 C 图像容器。工作代码:

IplImage* _recovered_cart_img;
_recovered_cart_img = cvLoadImage("savetest.png");

IplImage *_lin_polar_img = cvCreateImage(cvSize(_recovered_cart_img->height, _recovered_cart_img->width), IPL_DEPTH_8U, 3);

cv::Point2f center( (float)_lin_polar_img->width / 2.f, (float)_lin_polar_img->height / 2.f );
double maxRadius = 4.0*std::min(center.y, center.x);

cvLinearPolar(_lin_polar_img, _recovered_cart_img, center, maxRadius, cv::INTER_LINEAR+CV_WARP_INVERSE_MAP);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多