2013-12-10 21 views
2

Может кто-нибудь сказать мне, что я делаю неправильно, или дать мне пример, как создать гистограмму И ДИСПЛЕЙ из оттенков серого в OpenCV4 Android? Существует мой код ...Как создать и отобразить гистограмму в OpenCV4Android?

Vector<Mat> bgr_planes = new Vector<Mat>();                                             
Core.split(cleanFaceMatGRAY, bgr_planes); 
MatOfInt histSize = new MatOfInt(256); 
final MatOfFloat histRange = new MatOfFloat(0f, 256f); 
boolean accumulate = false; 
Mat b_hist = new Mat(); 
Imgproc.calcHist(bgr_planes, new MatOfInt(0),new Mat(), b_hist, histSize, histRange, accumulate); 

И тогда я пытаюсь установить его для просмотра изображения, чтобы увидеть его:

ivPickedPhoto.setImageBitmap(AppTools.createBitmapFromMat(b_hist, Bitmap.Config.ARGB_8888)); 

Способ отображения был создан сам по себе:

общественный класс Apptools {

public static Bitmap createBitmapFromMat(Mat mat, Bitmap.Config config) { 
    Bitmap bmp2 = null; 

    bmp2 = Bitmap.createBitmap(mat.cols(), mat.rows(), config); 
    Utils.matToBitmap(mat, bmp2); 
    return bmp2; 
} 

Это дает мне ошибку в ivPickedPhoto (...) лейн:

12-10 21:12:59.910: E/AndroidRuntime(10301): Caused by: CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:98: error: (-215) src.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4 in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean) 

Я думаю, моя проблема связана с тем, как я хочу отображать гистограмму ... я не могу преобразовать ее в bmp. Что такое хороший способ показать гистограмму?

+0

Эй, как вы это решили? – Solace

ответ

2

В OpenCV Java Documentation указано, что объект Mat, который вы передаете, должен иметь тип CV_8UC1, CV_8UC3 or CV_8UC4. Документация calcHist не действительно указать, какой тип вы должны ожидать, что ваш b_Hist быть, но так как он жалуется на Mat типа:

error: (-215) src.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4 

вы, вероятно, следует преобразовать его в любой из трех вышеуказанных форматов.

Смежные вопросы