不存在从“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 对象