【发布时间】:2016-08-02 00:23:01
【问题描述】:
我对 OpenCV 很陌生,所以我想我犯了一些愚蠢的错误。
首先,我创建一个空的cv::mat 矩阵mask,CV_8U 类型并用零填充它。然后,我通过使用cv::threshold 检查CV_32FC1 类型cv::mat 矩阵croppedDifferenceImage 中的值,用0 或255 填充矩阵。然后我使用mask 作为cv::mean 函数的参数。
cv::Mat mask = cv::Mat(croppedDifferenceImage.rows, croppedDifferenceImage.cols, CV_8U, cv::Scalar(0));
cv::threshold(croppedDifferenceImage, mask, 3.2, 255, CV_THRESH_BINARY);
double mean = cv::mean(croppedDifferenceImage, mask)[0];
但我总是遇到消息崩溃:
/build/buildd/opencv-2.4.8+dfsg1/modules/core/src/stat.cpp:565: error: (-215) mask.empty() || mask.type() == CV_8U in function mean
我做错了什么?
【问题讨论】:
-
您使用 opencv 2.4.0 而不是 opencv 3 的任何原因?
-
不知道有没有什么原因。我刚加入这个项目,对 opencv 也很陌生。
-
mask的类型是什么?根据threshold的文档,目的地是“与 src 相同的大小和类型”。这意味着您将 CV_32FC1 作为掩码传递给mean,这是无效的。 -
croppedDifferenceImage是彩色图像还是灰度图像? -
@mask "CV_32FC1 类型 cv::mat 矩阵croppedDifferenceImage 中的值" -- 单通道。另请注意,断言没有提及任何有关深度的内容。
标签: c++ opencv image-processing matrix threshold