私は800*480の画面解像度の特定のタブレットデバイス用のAndroidアプリケーションを開発しました。プロジェクトの目的は、画像をキャプチャすることです(顔検出を使用)。このために、opencv2.4.2 sdkを使用して画像をキャプチャしました(opencv顔検出サンプルを使用)。そのデバイスでは、カメラは右下隅にあります。そこで、逆ポートレートモードで画像をキャプチャしました(画像の転置を使用)。
The code snippet is below:
@Override
protected Bitmap processFrame(VideoCapture capture) {
FdActivity.mSquaredImage = 0;
resolution = 0;
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
Core.transpose(mRgba, mRgba);
Core.transpose(mRgba, mGray);
.....
.....
return bmp;
}
それはアンドロイドタブレットでうまく働いています。
今、私は自分のアプリケーションをモバイルデバイスで使用したいと思います。そこで、SAMSUNG GALAXYSIIでテストしました。
そして、私は1つの問題を抱えています。
The following code is to open the camera.
The code snippet is below:
public boolean openCamera() {
Log.i(TAG, "openCamera");
synchronized (this) {
releaseCamera();
mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID);
if (!mCamera.isOpened()) {
mCamera.release();
mCamera = null;
Log.e(TAG, "Failed to open native camera");
return false;
}
}
return true;
}
このコードは、タブレットでフロントカメラを開きます。しかし、SAMSUNG GALAXY S IIでは、バックカメラが開きます。このために私はopencv.orgフォーラムで検索し、次の解決策を得ました、
mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID+1);
これで、SAMSUNG GALAXYSIIでフロントカメラが開きます。しかし、タブレットで「カメラを開けません」というエラーが発生しました。何が問題なのか。そして私はHTCdesireandroidデバイスでテストしました。ただし、空白の画面しか表示されません(カメラは開かれていません)。
新しい要件は、ユーザーがデバイスの上部にあるカメラの位置を保持することです。デバイスを回転させた場合、画面と画像は回転しません。
非常に緊急です。誰かが私がこれを修正するのを手伝ってもらえますか?