OpenCV Ausrichtung der Kamera Problem
Habe ich ein einfaches Projekt, das nur zeigen, das die Kamera mit org.opencv.android.JavaCameraView.
mein problem ist, dass in der Standardeinstellung der Kamera ist auf landscape-Modus und ich kann nicht ändern, diese Ursache, die ich brauche, um zu definieren, CameraBridgeViewBase statt einer regulären Kamera-Vorsatz.
dies ist ein Teil von meinem code:
XML-code:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<org.opencv.android.JavaCameraView
android:layout_width="fill_parent"
android:layout_height="300dp"
android:visibility="gone"
android:id="@+id/HelloOpenCvView"
opencv:show_fps="true"
opencv:camera_id="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/BtnVideo"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_width="0dp"
style="@style/button"
android:layout_height="wrap_content"
android:layout_weight="1.00"
android:text="@string/videoBtn"
android:textSize="18dip" />
</LinearLayout>
Java-Code :
CameraBridgeViewBase mOpenCvCameraView;
Button VideoButton;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
overridePendingTransition(0, 0);
VideoButton = (Button) this.findViewById(R.id.BtnVideo);
VideoButton.setOnClickListener(onClickListener);
mOpenCvCameraView= (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView);
mOpenCvCameraView.setVisibility(SurfaceView.INVISIBLE);
}
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.BtnVideo:
if(mOpenCvCameraView.getVisibility() == SurfaceView.VISIBLE)
{
mOpenCvCameraView.setVisibility(SurfaceView.INVISIBLE);
}
else
{
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
}
break;
default :
break;
}
}
};
public void onResume() {
super.onResume();
overridePendingTransition(0, 0);
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}
public void onPause()
{
super.onPause();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
public void onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
public void onCameraViewStarted(int width, int height) {
}
public void onCameraViewStopped() {
}
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
return inputFrame.rgba();
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
//Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
Also, wie kann ich die Standardausrichtung des Tabletts ändern?
Dank!
InformationsquelleAutor user2235615 | 2013-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, fand ich dies als Lösung:
Ersten bekomme ich in
JavaCameraView.java
Klasse in der OpenCV-Bibliothek - 2.4.5und dann in
initializeCamera()
Funktion vormCamera.startPreview();
ich diese 2 Funktion:und die erste Funktion implementiert, wie dieses:
Ich nur daran erinnern, dass ich die Arbeit mit OpenCV.
Hoffe, dies hilft jemand.
Ich fand eine andere Lösung sehen Sie hier: answers.opencv.org/question/20325/...
Können Sie meine Lösung, die funktioniert für alle OpenCV-version : answers.opencv.org/question/20325/...
Es gibt Fehler, es scheint, dass Ihr Telefon doesnot unterstützt Kamera oder ist gesperrt!!!
dein code funktioniert, aber das problem ist, dass das Bild nicht im Vollbild im hochformat und auf der Suche zu viel gedehnt (breiter) oder es funktioniert nicht im Querformat gibt es eine andere Lösung
InformationsquelleAutor
Ich bin mit OpenCV 3.1, ich es beheben, indem Sie anwenden, verwandeln Sie beim zeichnen von bitmap-auf deliverAndDrawFrame Methode der CameraBridgeViewBase Klasse, Hoffe es ist hilfreich:
Auf CameraBridgeViewBase.java :
Erhalten Sie eine vollständige source-code hier:
https://gist.github.com/thongdoan/d73267eb58863f70c77d1288fe5cd3a4
er fügte hinzu updateMatrix () - Methode
Diese Antwort wird diskutiert, auf meta.
Sorry an alle für die späte Antwort, ich bearbeitet meine Antwort
InformationsquelleAutor
Versuchen, diese auf Ihre onCameraFrame
Hier gilt das gleiche, funktioniert aber stürzt die app nach einer Weile..
app-crash ist wohl zu Speicherverlust. haben zu release mRgba vor der Rückkehr. Und plus, die Schaffung mRgbaT als Globale variable hat das problem gelöst.
InformationsquelleAutor
Das problem ist, dass der code, der Farben nicht ob die Kamera params. Die Matte ist gezeichnet auf der Oberfläche Ansicht bei der Funktion "deliverAndDrawFrame" in der Klasse "CameraBridgeViewBase".
Mit einer sehr einfachen änderung in der CameraBridgeViewBase Klasse, können wir eine-Funktion, die dreht der Weg das bitmap gezeichnet wird.
Ich habe versucht, die häufigste Lösung, die die Verwendung von Core.flip-Funktion dreht die Matte, aber verbraucht eine Menge Ressourcen, diese Lösung hat keinen Einfluss auf die Erkennung und hat keinen Einfluss auf die Leistung, ändert sich nur die Art, wie das Bild gezeichnet wird auf der Leinwand.
Hoffe, dass dies helfen.
InformationsquelleAutor
android:screenOrientation Wert in der AndroidManifest.xml sollte helfen.
auch ich hatte das gleiche problem, dass die Kamera in portrait-Modus. ich hatte um die Ausrichtung zu ändern und manuell, um die Dinge in Ordnung zu
InformationsquelleAutor