来自网络摄像头的阈值图像

时间:2013-02-13 05:47:59

标签: c++ opencv

我正在教自己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()等......我无法让阈值工作。思考?谢谢!

1 个答案:

答案 0 :(得分:3)

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

cvThreshold的相应C ++函数是cv::threshold。只需将cvThreshold替换为cv::threshold