OpenCV中的Android逐位异或错误

bttbmeg0  于 2023-03-09  发布在  Android
关注(0)|答案(2)|浏览(109)

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

但还是同样的错误..

jdgnovmf

jdgnovmf1#

您的代码没有提到mRgba的类型,但从名称来看,我假设它是RGBA或CV_8UC4,这意味着temp1将与mRgba具有相同的类型。两个矩阵必须具有相同的大小和类型。这意味着temp2必须声明为CV_8UC4类型,或者必须首先将mRgba转换为CV_8UC1,可能是通过转换为灰度。但是等效的C++调用应该是:

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

1cklez4t2#

如果使用onCameraFrame(CameraBridgeViewBase.cvCameraViewFrame inputFrame)对返回的Mat对象进行一些调整,则必须注意使用灰色对象image和rgb对象,因为
CV_8UC4适用于mRgba CV_8UC1适用于灰阶
所以我会重新来看看这个。

相关问题