Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
在OpenCV Core.DCT()方法上崩溃Android程序_Android_Opencv_Image Processing - Fatal编程技术网

在OpenCV Core.DCT()方法上崩溃Android程序

在OpenCV Core.DCT()方法上崩溃Android程序,android,opencv,image-processing,Android,Opencv,Image Processing,我想写一个android程序来计算输入图像的dct,我正在使用opencv android框架。首先,我将输入图像转换为灰度,然后我想使用Core.dct()和16*16块计算dct。这是dct计算部分: int rownum = 1; for (int i = 1; i <= M - B + 1; i++) { for (int j = 1; j <= N - B + 1; j++) { Mat SubImg = GrayImage.

我想写一个android程序来计算输入图像的dct,我正在使用opencv android框架。首先,我将输入图像转换为灰度,然后我想使用Core.dct()和16*16块计算dct。这是dct计算部分:

int rownum = 1;
    for (int i = 1; i <= M - B + 1; i++) {
        for (int j = 1; j <= N - B + 1; j++) {
            Mat SubImg = GrayImage.submat(new Range(i, i+B-1), new Range(j, j+B-1));
            Mat Block_DCT = Mat.zeros(16, 16, SubImg.type());
            Mat Block_DCT_Quantized = Mat.zeros(16, 16, Block_DCT.type());

            Core.dct(SubImg, Block_DCT);
            Core.divide(Block_DCT, SQ16, Block_DCT_Quantized);
            Mat row = Mat.zeros(1, B*B, Block_DCT_Quantized.type());
            Block_DCT_Quantized.reshape(1, B*B);

            rownum=rownum+1;
        }
    }
intrownum=1;
对于(int i=1;idct需要浮点输入


在应用dct/dft之前,您必须将图像转换为CvType.CV_32F或CvType.CV_64F,然后才能发布logcat错误消息。也许您的算法使SubImg比Block_dct小。请打印这些矩阵大小以确保。