不存在用户定义的从“cv::Scalar”到“CvScalar”的转换
时间: 2023-09-24 08:05:50 浏览: 557
这个错误提示是因为在OpenCV 2.x版本之后,Scalar被改为了cv::Scalar,而不再是CvScalar。因此,如果你的代码中使用了CvScalar,就会出现这个错误。
要解决这个问题,可以将CvScalar改为cv::Scalar。比如,将原来的代码:
```cpp
CvScalar color = cvScalar(255, 0, 0);
```
改为:
```cpp
cv::Scalar color = cv::Scalar(255, 0, 0);
```
这样就可以避免这个错误了。
相关问题
不存在用户定义的从cv::Point到CvPoint的适当转换
在 OpenCV 3及以上版本中, `cv::Point` 和 `CvPoint` 之间已经可以直接进行赋值,不需要进行额外的转换。例如:
```c++
cv::Point pt(10, 10);
CvPoint cvPt = pt; // 直接将cv::Point赋值给CvPoint
```
在旧版本的 OpenCV 中,可以通过以下方式进行转换:
```c++
cv::Point pt(10, 10);
CvPoint cvPt = cvPoint(pt.x, pt.y); // 将cv::Point的x、y值分别赋给CvPoint的x、y
```
需要注意的是,旧版本的 OpenCV 中 `CvPoint`、`CvScalar` 等类型已经被标记为过时,在新的 OpenCV 版本中应该使用 `cv::Point`、`cv::Scalar` 等类型代替。
cv::scalar
cv::Scalar是OpenCV库中的一个类,用于表示颜色灰度值。它可以包含1到4个元素,分别对应于灰度值、蓝色通道、绿色通道和红色通道的数值。
在使用cv::Scalar时,可以根据需要传入不同数量的参数来创建不同类型的颜色或灰度值。例如:
- 如果只传入一个参数,表示创建一个灰度值,该参数为灰度值的数值。
- 如果传入三个参数,表示创建一个RGB颜色,分别对应于蓝色、绿色和红色通道的数值。
- 如果传入四个参数,表示创建一个RGBA颜色,分别对应于蓝色、绿色、红色和透明度通道的数值。
以下是一些示例:
1. 创建一个灰度值为128的Scalar对象:cv::Scalar gray(128)
2. 创建一个RGB颜色为(0, 255, 0)的Scalar对象:cv::Scalar green(0, 255, 0)
3. 创建一个RGBA颜色为(255, 0, 0, 128)的Scalar对象:cv::Scalar red(255, 0, 0, 128)