Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opencv、jni CV_8UC1类型与MixChannel()不兼容_C++_Image_Opencv_Java Native Interface_Computer Vision - Fatal编程技术网

C++ opencv、jni CV_8UC1类型与MixChannel()不兼容

C++ opencv、jni CV_8UC1类型与MixChannel()不兼容,c++,image,opencv,java-native-interface,computer-vision,C++,Image,Opencv,Java Native Interface,Computer Vision,我正在开发一个android应用程序,它逐帧处理实时摄像机流(以检测方块)。在预览回调中,它将图像帧作为字节数组传递。在我的opencv函数中,它将字节数组转换为mat对象。我需要使用mixchannels()函数在opencv中。我认为我的mat对象与mixchannels()不兼容,因为它击中了那里。有什么建议如何解决它。当我将image替换为image1时,它也击中了那里。请帮助。谢谢你,祝你度过愉快的一天!这是我的密码 JNIEXPORT jint JNICALL Java_org_o

我正在开发一个android应用程序,它逐帧处理实时摄像机流(以检测方块)。在预览回调中,它将图像帧作为字节数组传递。在我的opencv函数中,它将字节数组转换为mat对象。我需要使用
mixchannels()
函数在opencv中。我认为我的mat对象与
mixchannels()
不兼容,因为它击中了那里。有什么建议如何解决它。当我将
image
替换为
image1
时,它也击中了那里。请帮助。谢谢你,祝你度过愉快的一天!这是我的密码

 JNIEXPORT jint JNICALL Java_org_opencv_samples_tutorial3_Sample3View_FindFeatures(JNIEnv* env, jobject thiz, jint width, jint height, jbyteArray yuv, jintArray rgba)
{

jbyte*\u yuv=env->getbytearrayellements(yuv,0);

jint*\u rgba=env->GetIntArrayElements(rgba,0);

//Mat myuv(高度+高度/2,宽度,CV_8UC1,(无符号字符*)\u yuv);
Mat图像(高度+高度/2,宽度,CV_8UC1,(无符号字符*)\u yuv);//Mat对象中的字节数组
Mat图像1(高度+高度/2,宽度,CV_8UC3,(无符号字符*)\u yuv);
材料mrgba(高度、宽度、CV_8UC4,(无符号字符*)\u rgba);
材料经理(高度、宽度、CV_8UC1,(无符号字符*)\u yuv);
cvtColor(图像,mrgba,CV_YUV420i2RGB,4);
矢量平方//
矢量等值线//
jint面积=0;
int thresh=50,N=10;
Mat-pyr,timg,灰色0(image.size(),CV_8U),灰色;
pyrDown(image,pyr,Size(image.cols/2,image.rows/2));//减少了图像的噪音,如果我把‘image1’放在这里,它也会发出响声
pyrUp(pyr,timg,image.size());//减少图像的噪音
//for循环在图像的每个颜色平面中查找正方形
对于(int c=0;c<3;C++)
{
int ch[]={c,0};
mixChannels(&timg,1,&gray0,1,ch,1);//这里输入的代码。如果我用“1”替换“c”,它会工作
//Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv);
Mat image(height + height/2, width,  CV_8UC1, (unsigned char *)_yuv);//byte array in to mat object
Mat image1(height + height/2, width, CV_8UC3, (unsigned char *)_yuv);
Mat mrgba(height, width, CV_8UC4, (unsigned char *)_rgba);
Mat mgray(height, width, CV_8UC1, (unsigned char *)_yuv);


cvtColor(image, mrgba, CV_YUV420i2RGB ,4);




vector<vector<Point> > squares;//
vector<vector<Point> > contours;//
jint Area=0;
int thresh = 50, N = 10;

Mat pyr, timg, gray0(image.size(), CV_8U), gray;

pyrDown(image, pyr, Size(image.cols/2, image.rows/2));//reduces noice of the image,if i put'image1' here it struck too
pyrUp(pyr, timg, image.size());//reduces noice of the image


//for loop to find squares in every color plane of the image
for( int c = 0; c < 3; c++ )
{
int ch[] = {c, 0};
    mixChannels(&timg, 1, &gray0, 1, ch, 1);//code struck here.if i replace 'c' with '1' it workes