2013-06-30 9 views
19
Mat b = new Mat(); 
Bitmap bmp = getIntent().getExtras().getParcelable("image_send"); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_image); 
    Mat tmp = new Mat (bmp.getWidth(), bmp.getHeight(), CvType.CV_8UC1); 
    Utils.bitmapToMat(bmp, tmp); 
    Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY); 
    //Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_GRAY2RGB, 4); 
    Utils.matToBitmap(tmp, bmp); 

    iv = (ImageView) findViewById(R.id.imageView1); 
    iv.setImageBitmap(bmp); 
} 

बीएमपी प्रदर्शित नहीं कर सकता है, का उपयोग कर छवि को कैप्चर करने के बाद बिटमैप को मैट में कनवर्ट करें। एक तस्वीर लेने के बाद मेरा ऐप बंद कर दिया गया है।एंड्रॉइड कैमरा

+0

आप ऑनक्रेट में ओपनसीवी कोड का उपयोग नहीं कर सकते (देशी मूल रूप से अभी तक भारित है) – berak

उत्तर

24

Utils.bitmapToMapARGB_8888 या RGB_565 प्रकार के बिटमैप की आवश्यकता है।

import org.opencv.android.Utils; 

Mat mat = new Mat();  
Bitmap bmp32 = bmp.copy(Bitmap.Config.ARGB_8888, true); 
Utils.bitmapToMat(bmp32, mat); 
3

Mat tmp = new Mat (bmp.getWidth(), bmp.getHeight(), CvType.CV_8UC1);

OpenCV चटाई निर्माता पंक्तियाँ, कॉलम जोड़ी के बजाय चौड़ाई, अपने तर्कों के रूप में ऊंचाई, उन्हें उलटने की उम्मीद है।

प्रयास करें:

Mat tmp = new Mat (bmp.getHeight(), bmp.getWidth(), CvType.CV_8UC1);

-1

मेरे एप्लिकेशन के साथ भी यही समस्या है। मुख्य गतिविधि में, मुझे ओपनसीवी उपयोग करने योग्य प्रस्तुत करना पड़ा। (मुझे लगता है कि मैट लाइब्रेरी का उपयोग होने पर आपके ऐप ने एक लिंक त्रुटि फेंक दी थी)। सभी नमूना ऐप्स ऐसा करते हैं। इसे मुख्य गतिविधि में शामिल करें।

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
     @Override 
     public void onManagerConnected(int status) { 
      switch (status) { 
       case LoaderCallbackInterface.SUCCESS: 
       { 
        Log.i("OpenCVManager setup", "OpenCV loaded successfully"); 
        //Use openCV libraries after this 
       } break; 
       default: 
       { 
        super.onManagerConnected(status); 
       } break; 
      } 
     } 
    }; 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, 
       mLoaderCallback); 
    } 
संबंधित मुद्दे