OpenCV 中的 Android 按位异或错误

标签 android opencv bit-manipulation xor bitwise-xor

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

但是还是一样的错误..

最佳答案

您的代码没有提到 mRgba 的类型,但从名称上我认为它是 RGBA,或 CV_8UC4。这意味着 temp1mRgba 的类型相同。作为错误状态,两个矩阵必须具有相同的大小和类型。这意味着 temp2 必须声明为 CV_8UC4 类型,或者您必须首先将 mRgba 转换为 CV_8UC1,也许通过转换为灰度。我不熟悉 Java 接口(interface),但等效的 C++ 调用是:

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

关于OpenCV 中的 Android 按位异或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937125/

相关文章:

android - 如何支持在 eclipse 中支持旧的 android 版本

android - 旋转设备时加载对话框

c++ - OpenCV 中的自定义 SIFT 检测器

在 C 编程中改变一点

java - 卸载现有版本的 apk(如果存在)然后重新安装

android - 在android中一个接一个地播放声音文件

python - 如何获取带有时间戳的帧,其中帧是从 python 中的视频转换而来的

image-processing - 如何使用 OpenCV(模板匹配)检测和匹配标记

bit-manipulation - Verilog 访问特定位

c - 如何向字节添加和提取位?