OpenCV 断言错误 mat.hpp 第 570 行

Posted

技术标签:

【中文标题】OpenCV 断言错误 mat.hpp 第 570 行【英文标题】:OpenCV Assertion Error mat.hpp line 570 【发布时间】:2015-12-26 07:25:51 【问题描述】:

当我尝试实现此代码以调用所有稍后使用的颜色时.. 它显示错误.. 有谁知道此代码有什么问题.. tq

// Extracting pure colors to use in demo
    const int ncolors = 16;
    std::vector<Scalar> colors;
    for (int n = 0; n < ncolors; ++n) 
        Mat color(Size(1, 1), CV_32FC3);
        color.at<float>(0) = (360) / ncolors * n;
        color.at<float>(1) = 1.0;
        color.at<float>(2) = 0.7;
        cvtColor(color, color, CV_HSV2BGR);
        color = color * 255;
        colors.push_back(Scalar(color.at<float>(0), color.at<float>(1), color.at<float>(2)));
    

【问题讨论】:

【参考方案1】:

矩阵color 是一个 1x1 矩阵,有 3 个通道,所以你应该访问为:

color.at<Vec3f>(0)[0] = 360.f / ncolors * n;
color.at<Vec3f>(0)[1] = 1.f;
color.at<Vec3f>(0)[2] = 0.7f;

您应该在构造标量时以类似方式访问它。

【讨论】:

以上是关于OpenCV 断言错误 mat.hpp 第 570 行的主要内容,如果未能解决你的问题,请参考以下文章

OPENCV / C++: approxpolydp 断言失败错误

(opencv) 调试断言失败,向量下标超出范围

OpenCV 错误:互相关中的断言失败

resize

调试断言错误 - OpenCV

Opencv 断言错误