Android的JavaCV从摄像机,ColorHistogram使用创建的IplImage [英] Android JavaCV create IplImage from Camera to use with ColorHistogram

查看:358
本文介绍了Android的JavaCV从摄像机,ColorHistogram使用创建的IplImage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Android中使用JavaCV。结果
在我的code,我创建了一个ImageComparator(类OpenCV的菜谱结果
<一href=\"http://$c$c.google.com/p/javacv/source/browse/OpenCV2_Cookbook/src/opencv2_cookbook/chapter04/ImageComparator.scala?repo=examples\" rel=\"nofollow\">http://$c$c.google.com/p/javacv/source/browse/OpenCV2_Cookbook/src/opencv2_cookbook/chapter04/ImageComparator.scala?repo=examples

HTTP://$c$c.google.com/p/javacv/wiki / OpenCV2_Cookbook_Examples_Chapter_4 )对象,并使用该对象来比较图像。如果我使用的文件从SD卡的比较工作。

I am using JavaCV in Android.
In my code, I have created a ImageComparator(class of OpenCV CookBook
http://code.google.com/p/javacv/source/browse/OpenCV2_Cookbook/src/opencv2_cookbook/chapter04/ImageComparator.scala?repo=examples
http://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_4) Object and use that object to compare images. If I use file from SD card the comparator is working.

File referenceImageFile = new File(absPath1); // Read an image.    
IplImage reference = Util.loadOrExit(referenceImageFile,CV_LOAD_IMAGE_COLOR);    
comparator = new ImageComparator(reference);    
comparator = new ImageComparator(reference);    

但是,从相机preVIEW,当我创建的IplImage它不工作。我在比较得分计算得到以下异常。

But from Camera Preview, when I am creating IplImage it is not working. I am getting the following Exception during comparison "score" calculation.

分数= referenceComparator.compare(grayImage)/ IMAGESIZE;
了java.lang.RuntimeException:/home/saudet/android/OpenCV-2.4.2/modules/core/src/convert.cpp:1196:错误:(-215)I&LT; src.channels()的函数void cvSplit(常量无效*,无效*,无效*,无效*,无效*)

score = referenceComparator.compare(grayImage) / imageSize; java.lang.RuntimeException: /home/saudet/android/OpenCV-2.4.2/modules/core/src/convert.cpp:1196: error: (-215) i < src.channels() in function void cvSplit(const void*, void*, void*, void*, void*)

有关相机preVIEW我使用从脸部preVIEW的code创建IplImage.But它的灰度图像创建

For CameraPreview I am using the code from FacePreview to create IplImage.But it create Image in grayScale.

int f = SUBSAMPLING_FACTOR;
        if (grayImage == null || grayImage.width() != width / f
                || grayImage.height() != height / f) {
            grayImage = IplImage.create(width / f, height / f, IPL_DEPTH_8U, 1);
        }
        int imageWidth = grayImage.width();
        int imageHeight = grayImage.height();
        int dataStride = f * width;
        int imageStride = grayImage.widthStep();
        ByteBuffer imageBuffer = grayImage.getByteBuffer();
        for (int y = 0; y < imageHeight; y++) {
            int dataLine = y * dataStride;
            int imageLine = y * imageStride;
            for (int x = 0; x < imageWidth; x++) {
                imageBuffer.put(imageLine + x, data[dataLine + f * x]);
            }
        }

如何从相机创建一个颜色的IplImage与ImageComparator使用?

How to create a Color IplImage from Camera to use with ImageComparator?

推荐答案

我没有测试过,但这样的事情应该工作:

I haven't tested it, but something like this should work:

IplImage yuvimage = IplImage.create(width, height * 3 / 2, IPL_DEPTH_8U, 2);
IplImage rgbimage = IplImage.create(width, height, IPL_DEPTH_8U, 3);
cvCvtColor(yuvimage, rgbimage, CV_YUV2BGR_NV21);

这篇关于Android的JavaCV从摄像机,ColorHistogram使用创建的IplImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆