ImageManipulationsActivity.VIEW_MODE_BINARY:
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
Mat binary = new Mat();
Imgproc.cvtColor(mRgba,binary, Imgproc.COLOR_RGBA2GRAY, 4);
int size = (int) binary.total() * binary.channels();
double[] buff = new double[size];
binary.get(0, 0, buff);
for(int i = 0; i < size; i++)
{
buff[i] = (buff[i] >= 0) ? 1 : 0;
}
Mat bv = new Mat(binary.size(), CvType.CV_8U);
bv.put(0, 0, buff);
Imgproc.cvtColor(binary, mRgba, Imgproc.COLOR_GRAY2RGBA, 4);
break;
上面的代码是用于opencv4android二值化灰度图像,但直到知道那不是为我工作,我在上面的代码复制从here,在上面的代码中,我尝试:用什么默认类型垫图像OpenCV4Android?
- Retrive垫图片:使用Imgproc.cvtColor capture.retrieve
- 转换图像为灰度
- 二值化用Java原始阵列等上面的代码
- 然后转换从灰回RGBA
- 使用位图显示结果bmp
如果您有什么建议,请告诉我。我不知道我从上面的代码中弄错了什么,它没有错误,但是当我安装应用程序并运行它时,它始终强制关闭。
这是从应用程序的logcat:
致命异常:螺纹10 java.lang.UnsupportedOperationException:无光泽数据类型不兼容:0在org.opencv.core.Mat.get(Mat.java:2042 )at org.opencv.samples.imagemanipulations.ImageManipulationsView.processFrame(ImageM anipulationsView.java:158)at org.opencv.samples.imagemanipulations.SampleCvViewBase.run(SampleCvViewBase.java:99)at org.opencv.samples.imagemanipulations .ImageManipulationsView.run(ImageManipulati onsView.java:195)at java.lang.Thread.run(Thread.java:1019)
这是什么语言? – Niko 2013-02-26 13:28:16
opencv for android – baharsan 2013-02-26 21:54:14
还有一个在C++中的threshold()函数,在java中也是如此。 – berak 2013-02-26 22:25:49