不存在从“cv::Scalar”到“CvScalar”的合适的用户定义转换

Posted

技术标签:

【中文标题】不存在从“cv::Scalar”到“CvScalar”的合适的用户定义转换【英文标题】:No suitable user-defined conversion from "cv::Scalar" to "CvScalar" exists 【发布时间】:2020-11-10 10:27:33 【问题描述】:

我正在准备用这个特征在 pc 中运行旧的 c++ 代码:

opencv:3.4.14 操作系统:Win 10 代码:c++

代码示例:

CvScalar color = CV_RGB(255, 255, 255);

但返回下一个错误:

Severity    Code    Description Project File    Line    Suppression State
Error   C2440   'initializing': cannot convert from 'cv::Scalar' to 'CvScalar'  

【问题讨论】:

不要使用过时的 C api! 这是一个有数百个类的代码,我不能改变所有的C api。 你必须降级到 OpenCV 2.x,因为 CvScalar 的定义和 3.x 的许多其他事情发生了变化。 【参考方案1】:

改变这个:

CvScalar color = CV_RGB(255, 255, 255);

到这里:

cv::Scalar color = CV_RGB(255, 255, 255);

【讨论】:

CV_RGB 也是过去的爆炸。简单地说:cv::Scalar color(255, 255, 255)(请注意,opencv 默认使用 BGR 颜色排序

以上是关于不存在从“cv::Scalar”到“CvScalar”的合适的用户定义转换的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 中的矩阵乘法 - 结合 cv::Mat 和 cv::Scalar 对象

C++ - 错误:为 OpenCV 的 cv::Scalar::all 创建 C 包装器时出现预期的类型说明符

OpenCV 绘制形状与文字

OpenCV 绘制形状与文字

c ++ opencv randu函数抛出'整数除以零'

如何比较 OpenCV 中的两个 Mats 列