1

我正在为一个最终将涉及对象跟踪等的工作项目自学 OpenCV,而我现在只是想熟悉基础知识。我有一段代码旨在简单地从我的网络摄像头中抓取图像,将它们转换为灰度和阈值,然后将它们打印到窗口中。我不断收到此错误:

“无法将参数 1 从 'cv::Mat' 转换为 'const CvArr *'”

使用此代码:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    Mat img;
    VideoCapture cap(0);

    while (true)
    {
        cap >> img;

        Mat tHold;
        cvtColor(img, tHold, CV_BGR2GRAY);
    cvThreshold(tHold, tHold, 50, 255, CV_THRESH_BINARY);

        imshow("Thresholded Image", tHold);
        waitKey(1);
    }

    return 0;
}

问题是其他函数似乎可以工作,比如 Canny() 等......我只是无法让阈值工作。想法?谢谢!

4

1 回答 1

3

您正在使用cvThresholdOpenCV 的 C 接口中的函数。而输入图像的类型cv::Mat来自 C++ 接口。

对应的 C++ 函数cvThresholdcv::threshold. 只需替换cvThresholdcv::threshold.

于 2013-02-13T06:09:29.707 回答