3

我在 android 上尝试了按位异或,但出现以下错误:

04-11 00:25:47.404: E/cv::error()(7370): OpenCV Error: Sizes of input arguments do not match (The operation is neither 'array op array' (where arrays have the same size and type), nor 'array op scalar', nor 'scalar op array') in void cv::binary_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, void (* const*)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool), file /home/reports/ci/slave/50-SDK/opencv/modules/core/src/arithm.cpp, line 1021

这是我的代码:

Mat temp1 = mRgba.submat(roi); 
Mat temp2 = Mat.zeros(temp1.size(), CvType.CV_8UC1);    
Core.bitwise_xor(temp1, temp2, temp1);

我还尝试通过以下方式实例化 temp1 和 temp2:

Mat temp1 = new Mat(height, width, CvType.CV_8UC1); 
Mat temp2 = new Mat(height, width, CvType.CV_8UC1);

但仍然是同样的错误..

4

1 回答 1

3

您的代码没有提及 的类型mRgba,但从名称我认为它是 RGBA 或CV_8UC4. 这意味着temp1将与 具有相同的类型mRgba。如错误所述,两个矩阵必须具有相同的大小和类型。这意味着要么temp2必须声明为类型,CV_8UC4要么您必须首先转换mRgbaCV_8UC1,也许通过转换为灰度。我不熟悉 Java 接口,但等效的 C++ 调用是:

cv::cvtColor(mRgba, mRgba, CV_RGBA2GRAY);
于 2013-04-11T15:15:33.293 回答