我尝试使用opencv库在android studio上进行色彩空间转换。但是我有一个错误。
我的主要活动;
package com.example.alper.son;
In [21]: df.groupby('id')['color'].apply(lambda x: x.tolist()).reset_index()
Out[21]:
id color
0 1 [red, blue, yellow]
1 2 [green, black]
2 3 [yellow, white, blue]
我的本地课程;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{
private static String TAG ="MainActivity";
private CameraBridgeViewBase cameramaneger;
Mat mRgba , mGray;
static {System.loadLibrary("MyLibs");}
private BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
cameramaneger.enableView();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (OpenCVLoader.initDebug()){
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this,baseLoaderCallback );
Log.i(TAG, "işlem tamam");
}
cameramaneger = (CameraBridgeViewBase) findViewById(R.id.java_camera_view);
cameramaneger.setVisibility(View.VISIBLE);
cameramaneger.setCvCameraViewListener(this);
cameramaneger.setCameraIndex(0);
}
static {System.loadLibrary("MyLibs");}
@Override
public void onCameraViewStarted(int width, int height) {
mRgba=new Mat(height,width, CvType.CV_8UC4);
mGray=new Mat(height,width,CvType.CV_8UC1);
}
@Override
public void onCameraViewStopped() {
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba=inputFrame.rgba();
AClass.ConvGray(mRgba.getNativeObjAddr(),mGray.getNativeObjAddr());
return mGray;
// return inputFrame.rgba();
}
}
ændroid。 MK; LOCAL_PATH:= $(调用my-dir)
package com.example.alper.son;
/**
* Created by alper on 29.11.2016.
*/
public class AClass {
public native static int ConvGray (long mAddrRgba ,long mAddrGray);
}
include $(CLEAR_VARS)
LOCAL_SRC_FILES :=com_example_alper_asd_AsdClass.cpp
Application.mk;
OPENCVROOT:= C:\OpenCV-2.4.9-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyLibs
include $(BUILD_SHARED_LIBRARY)
.cpp代码;
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := x86 armeabi armeabi-v7a mips
APP_PLATFORM := android-16
我的错误;
#include <com_example_alper_son_AClass.h>
JNIEXPORT jint JNICALL Java_com_example_alper_son_AClass_ConvGray
(JNIEnv *, jclass, jlong mAddrRgba, jlong mAddrGray){
Mat &mRgba= *(Mat*)mAddrRgba;
Mat &mGray= *(Mat*)mAddrGary;
long conv;
jint retval;
conv = toGray (mRgba ,mGray);
retval = (jint)conv;
return retval;
}
long togray (Mat img, Mat &Gray){
cvtColor(img, gray, CV_RGB2Lab);
if (gray.rows == img.rows && gray.cols == img.cols)
return 1;
return 0;
}
}