Files
MINDdroidCV/MINDdroidCV_MINDSTORMS/jni/jni_part.cpp.orig
2011-10-12 13:16:02 +02:00

46 lines
1.3 KiB
C++

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>
using namespace std;
using namespace cv;
extern "C" {
JNIEXPORT void JNICALL Java_com_lego_minddroid_SampleView_FindLight(JNIEnv* env, jobject thiz, jlong _imgInp, jlong _imgRes, jintArray array)
{
jint* _array = env->GetIntArrayElements(array, 0);
Mat* pMatInp=(Mat*)_imgInp;
Mat* pMatRes=(Mat*)_imgRes;
Mat m = Mat(pMatInp->rows,pMatInp->cols,CV_8UC4);
vector<Mat> planes;
//Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv);
//Please make attention about BGRA byte order
//ARGB stored in java as int array becomes BGRA at native level
cvtColor(*pMatInp, m, CV_BGR2HSV, 4);
split(*pMatRes,planes);
for(int i=0; i<4; ++i ){
planes[i] = Mat::zeros(planes[i].rows,planes[i].cols, CV_8UC1); //Mat::eye(planes[i].rows,planes[i].cols, CV_8UC1)*255;
}
Scalar lightLower = Scalar(0, 0, 220);
Scalar lightUpper = Scalar(360, 10, 255);
//for(int i=0; i<4; ++i ){
inRange(m, lightLower, lightUpper, planes[0]);
//}
merge(planes,*pMatRes);
circle(*pMatRes, Point(100, 50), 10, Scalar(255,0,255,255));
_array[1] = 2*_array[0];
env->ReleaseIntArrayElements(array, _array, 0);
}
}