在OpenCV Core.DCT()方法上崩溃Android程序
我想写一个android程序来计算输入图像的dct,我正在使用opencv android框架。首先,我将输入图像转换为灰度,然后我想使用Core.dct()和16*16块计算dct。这是dct计算部分:在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.
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小。请打印这些矩阵大小以确保。