Android OpenCV 中的按位异或错误

问题描述 投票:0回答:2

我在 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);

但还是一样的错误..

android opencv bit-manipulation xor bitwise-xor
2个回答
3
投票

你的代码没有提到

mRgba
的类型,但是从名字我假设它是RGBA,或者
CV_8UC4
。这意味着
temp1
mRgba
的类型相同。作为错误状态,两个矩阵必须具有相同的大小和类型。这意味着要么
temp2
必须声明为
CV_8UC4
类型,或者您必须首先将
mRgba
转换为
CV_8UC1
,也许通过转换为灰度。我不熟悉 Java 接口,但等效的 C++ 调用是:

cv::cvtColor(mRgba, mRgba, CV_RGBA2GRAY);

0
投票

如果您使用 onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) 对返回的 Mat 对象进行一些调整,您必须注意使用灰色对象图像和 rgb 对象,因为

CV_8UC4 用于 mRgba CV_8UC1 用于灰度化

所以我会建议检查一下。

© www.soinside.com 2019 - 2024. All rights reserved.