我正在教自己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()等......我无法让阈值工作。思考?谢谢!
答案 0 :(得分:3)
您正在使用OpenCV的C接口中的cvThreshold
函数。而输入图像的类型为cv::Mat
,来自C ++接口。
cvThreshold
的相应C ++函数是cv::threshold
。只需将cvThreshold
替换为cv::threshold
。