2017-01-04 23 views
0

私はデバイスから輪郭を検出するカメラフィードのリアルタイム処理を可能にするアンドロイドアプリを書こうとしています。多くの例をオンラインにしても、次のコードを実行すると、例外がスローされます(下にも示されています)。アンドロイドopencv findcontours()サポートされていないフォーマットの例外

コード:

Bitmap image = mTextureView.getBitmap(); 
Mat mat = new Mat(); 
Mat matConverted = new Mat(); 
Utils.bitmapToMat(image, mat); 
mat.convertTo(matConverted, CvType.CV_32SC1); 
List<MatOfPoint> contours = new ArrayList<>(); 
Imgproc.findContours(matConverted, contours, new Mat(), Imgproc.RETR_FLOODFILL, 
    Imgproc.CHAIN_APPROX_SIMPLE); 

が例外:

CvException [org.opencv.core.CvException: cv::Exception: 
/Volumes/Linux/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp:198: 
error: (-210) [Start]FindContours supports only CV_8UC1 images when mode != 
CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function _CvContourScanner* 
cvStartFindContours(void*, CvMemStorage*, int, int, int, CvPoint) 

私はここに明らかに何かが足りないのですか?

+0

働いていた、私の場合は

Mat matConverted = new Mat(mat.size(), CvType.CV_8UC1); 

を試してみてください。 findContoursに供給されるイメージは、1チャネルの8ビットイメージでなければなりません。あなたのものは32ビットです。 – hiroki

答えて

0

は、それはエラーメッセージはそれをすべて言う

関連する問題