BufferedImage를 IplImage로 효율적으로 변환하려고합니다 ... jni 부분에 대해 어떤 힌트를 주시겠습니까?BufferedImage를 IplImage로 효율적으로 변환하십시오.
나는 BufferedImage의에서 RGBS을 얻고 난 다음을 수행 JNI 코드로 보낼 :
IplImage* getIplImageFromIntArray(JNIEnv* env, jintArray array_data,
jint width, jint height) {
int *pixels = env->GetIntArrayElements(array_data, 0);
if (pixels == 0) {
return 0;
}
IplImage *image = loadPixels(pixels, width, height);
env->ReleaseIntArrayElements(array_data, pixels, 0);
if (image == 0) {
return 0;
}
return image;}};
및
IplImage* loadPixels(int* pixels, int width, int height) {
int x, y;
IplImage *img = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
unsigned char* base = (unsigned char*) (img->imageData);
unsigned char* ptr;
for (y = 0; y < height; y++) {
ptr = base + y * img->widthStep;
for (x = 0; x < width; x++) {
// blue
ptr[3 * x] = pixels[x + y * width] & 0xFF;
// green
ptr[3 * x + 1] = pixels[x + y * width] >> 8 & 0xFF;
// blue
ptr[3 * x + 2] = pixels[x + y * width] >> 16 & 0xFF;
}
}
return img;}
는 지금은이 단계를 수행
하지만 정말 천천히 ... 도와 줘서 고마워! JavaCV와
답장을 보내 주셔서 감사합니다. 그 이미지를 일치 목적으로 사용한다고 말하지 않았습니다. 즉, find_obj.cpp 데모와 서핑을 사용하여 두 이미지를 비교합니다. JavaCV를 보았지만 ObjectFinder가 find_obj.cpp와 같은 방식으로 두 이미지와 일치하는지 확신 할 수 없습니다. 당신이 저를 도울 수 있다면 기쁘 겠지만, 아마도 새로운 질문을 만들어야 할 것입니다 ... 고맙습니다. – user1148222
좋아요, JavaCV가 어떻게 작동하는지 더 자세히 설명 할 편집을하겠습니다 ... –
안녕하세요 사무엘, 자세한 답변을 주셔서 감사합니다 ... 제가 묻는 것을 설명합니다. – user1148222