【发布时间】:2014-05-19 13:20:48
【问题描述】:
我正在尝试在 Android 中实现 DCT 代码。我正在使用代码进行测试,但只是更改为 DCT 而不是 DFT:Convert OpenCv DFT example from C++ to Android。由于 timegalore,代码已经发生了变化。现在我在将图像转换回 BGR 时遇到问题。
public void transformImage(){
image = Highgui.imread(imageName, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
try {
secondImage = new Mat(image.rows(), image.cols(), CvType.CV_64FC1);
image.convertTo(secondImage, CvType.CV_64FC1);
int m = Core.getOptimalDFTSize(image.rows());
int n = Core.getOptimalDFTSize(image.cols()); // on the border add zero values
Mat padded = new Mat(new Size(n, m), CvType.CV_64FC1); // expand input image to optimal size
Imgproc.copyMakeBorder(secondImage, padded, 0, m - secondImage.rows(), 0, n - secondImage.cols(), Imgproc.BORDER_CONSTANT);
Mat result = new Mat(padded.size(), padded.type());
Core.dct(padded, result);
Mat transformedImage = new Mat(padded.size(), padded.type());
Core.idct(result, watermarkedImage);
completedImage = new Mat(image.rows(), image.cols(), CvType.CV_64FC1);
Imgproc.cvtColor(transformedImage, completedImage, Imgproc.COLOR_GRAY2BGR);
} catch (Exception e) {
Log.e("Blargh", e.toString());
}
}
现在,我得到了这个错误
04-09 21:35:52.362:E/cv::error()(23460):OpenCV 错误:无效 cv 中的断言失败(深度 == CV_8U || 深度 == CV_16U || 深度 == CV_32F) ::cvtColor(cv::InputArray, cv::OutputArray, int, int),文件/home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/color.cpp,第3642行
我不知道我应该怎么做,请指教。非常感谢您的帮助!
【问题讨论】:
标签: java android opencv image-processing