1
我正在使用OpenCV 2.3.1庫的FaceDetect Android應用程序。我找到了一些代碼,可以讓我在 上製作我的三星GT-P1000的照片並將其保存在圖庫中。然後我想從圖庫中選擇 ,它允許.cpp文件使用OpenCV 函數。這需要一個位圖到IplImage的轉換(下面添加.java 和.cpp代碼片段)。將IplImage顯示爲Android位圖
Java代碼看起來是這樣的:
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentImagePath);
Log.i(TAG, mCurrentImagePath);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
opencv.setSourceImage(pixels, width, height);
byte[] imageData = opencv.getSourceImage();
bitmap = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length);
mImageView.setImageBitmap(bitmap);
的C++代碼看起來是這樣的:
IplImage * pImage = NULL;
IplImage * loadpixels(int * pixels, int width, int height);
IplImage * getIplImageFromIntArray
(JNIEnv* env, jintArray array_data, jint width, jint height);
JNIEXPORT jboolean JNICALL Java_org_opencv_example_pruts_Test1OpenCV_setSourceImage
(JNIEnv * env, jobject thiz, jintArray photo_data, jint width, jint height)
{
if(pImage != NULL)
{
cvReleaseImage(&pImage);
pImage = NULL;
}
pImage = getIplImageFromIntArray(env, photo_data, width, height);
if(pImage == 0)
{
return 0;
}
return 1;
}
但是我需要其中的IplImage 轉換爲位圖數據的另一個JNIEXPORT功能。因此最後4行代碼將被使用。應該填充imageData以便BitmapFactory可以解碼它。我遇到了很多示例,這些代碼片段也來自這些代碼片段。然而,我無法找到解決我的問題的方法。有沒有人有一些建議?
代碼沒有測試 – zhijie 2012-03-22 10:13:33