[英](Adaptive) thresholding in opencv error (Bad argument (Unknown array type) in cvarrToMat)
我正在尝试在我的视频流上使用阈值处理,但它无法正常工作。
我的视频流:
Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));
然后我尝试进行自适应阈值处理(也不适用于常规阈值处理)
for(;;){
if( wrapper->update()){
wrapper->getDisplayDepth(depthImage);
cvAdaptiveThreshold(depthImage, depthImage,255,CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY,75,10);
imshow("Depth", *depthImage);
}
int k = waitKey(25);
if(k == 27 ) exit(0);
}
我收到此错误:
OpenCV错误:cvarrToMat中的错误参数(未知数组类型),文件/Users/olivierjanssens/source/OpenCV-2.3.1/modules/core/src/matrix.cpp,第646行终止称为抛出异常
我做错了什么,我可以得到显示并完美地看到流。但是当我添加这个阈值时,我得到前面提到的错误。 (我对opencv btw很新)。
Thx提前!
你的depthImage是一个指向cv :: Mat的指针,这对我来说似乎很奇怪......
...但是,如果您正在使用C ++语法,那么您将需要使用C ++版本的adaptiveT来处理cv::Mat
,其定义如下:
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue,
int adaptiveMethod, int thresholdType, int blockSize, double C);
如果您还没有使用该命名空间,则需要以cv::
为前缀。
例如:
Mat *depthImage; // Obtain this using your method
Mat image = *depthImage; // Obtain a regular Mat to use (doesn't copy data, just headers)
adaptiveThreshold(image, image,255,CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY,75,10);
imshow("Depth Image", *depthImage);
// OR
imshow("Depth Image", image);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.