我使用OpenCV的JavaCameraView
來捕捉圖像。所以它有onCameraFrame
方法。如何同步Android中的兩種方法?
@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
rgb = inputFrame.rgba();
if(viewMode == VIEW_MODE_EDGE){
Mat mIntermediateMat = new Mat(rgb.size(), rgb.type());
Imgproc.Canny(rgb, mIntermediateMat, 80, 90);
Imgproc.cvtColor(mIntermediateMat, rgb, Imgproc.COLOR_GRAY2BGRA, 4);
mIntermediateMat.release();
}
return rgb;
}
該方法總是運行,我將傳入圖像轉換爲Canny邊緣並顯示。
我實現了一個按鈕,複製坎尼圖像,並傳遞到另一個活動。對於我做了一個全球public static Mat Canny_image;
當按鈕被按下時rgb
圖像從onCameraFrame
被複制到Canny_image
。然後下一個活動被調用。 我的代碼是
ImageCapture.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mOpenCvCameraView != null)
{
Canny_image= rgb.clone();
}
final Intent intent = new Intent(ctxt, TextExtraction.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
});
問題:當我按下按鈕,如果精明轉化是在onCameraFrame
方法完成時,收到精明的圖像(只有邊緣的圖像)。但是,如果它尚未轉換或中途轉換,我會收到原始RGB圖像(原始RGB圖像)或半路轉換圖像。我怎樣才能確保我只接收精明的圖像,並確保在轉換過程完成,不要在ImageCapture.setOnClickListener(new OnClickListener(){};
感謝
我實現CountDownTimer並將討論後 – batuman