0

Android 用の OpenCV を使用していますが、Mat オブジェクトの長方形の表面を明るくする方法を知りたいです。

領域内の各ピクセルの各 RGB コンポーネントに 30 を加算するこの関数を作成します。期待どおりに動作しますが、非常に遅すぎます。

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    Mat frame = inputFrame.rgba();
    int h = 300;
    int w = (int) ((int) ( (float) h ) * 1.5);

    return drawRectangle(frame, h, w);
}

private Mat drawRectangle(Mat frame, int h, int w){
    for( int y = (frame.rows() - h) / 2 ; y < (frame.rows() + h) / 2 ; y++ ) { 
        for( int x = (frame.cols() - w) / 2; x < (frame.cols() + w) / 2; x++ ) {
            for( int c = 0; c < 3; c++ ) {
                double[] color = frame.get(y, x);
                for(int i = 0; i < 3; i++)
                    color[i] += 30;

                frame.put(y, x, color);

            }
        }
    }
    return frame;
}

これを即座に行う方法があると確信しています (白黒、負の効果が即座に処理される例を見たことがあります) が、OpenCv と Android にあまり慣れていないため、哲学はまだわかっていないと思います。

4

1 に答える 1