私は自分のSamsung GT-P1000で写真を撮りたいと思っています。この写真をいくつかのOpenCV関数で編集し、再びタブレットに表示します。私はこのウェブサイトからサンプルを編集しようとしている:http://www.stanford.edu/~zxwang/android_opencv.htmlJNIEXPORT:getIplImageFromIntArrayコンパイルエラー
を私はプロジェクトのABITを変更したと私が使用しているサンプルプロジェクトはJNIEXPORT JNICALLを使用しています2.3.1
if(requestCode == ACTIVITY_SELECT_IMAGE && resultCode == RESULT_OK)
{
try
{
Uri currImageURI = data.getData();
String[] proj = {Images.Media.DATA, Images.Media.ORIENTATION};
Cursor cursor = managedQuery(currImageURI, proj, null, null, null);
int columnIndex = cursor.getColumnIndex(proj[0]);
cursor.moveToFirst();
mCurrentImagePath = cursor.getString(columnIndex);
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);
......
<some more irrelevant Java code>
....
のOpenCVを使用していますがビットマップをIplImageとしてロードして、OpenCVで編集できるようにします。コードは以下の通りです。しかし、私はすべてのことをコンパイルするためにndk-buildを使用しようとすると、エラーが発生します:../jni_part.cpp:28: 'getIplImageFromIntArray'への未定義参照。これは、私の.cppファイルや他のファイルの読み込みが行えないということですか?私は 'getIplImageFromIntArray'でgoogleしようとしましたが、助けを見つけることができません。誰かが間違っていることを私に説明することはできますか?
#ifdef __cplusplus
extern "C"
{
#endif
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;
}
あなたの問題を解決しますcom_your_packageでedu_stanford_android交換してください。しかし、あなたが言及したこの接頭辞で、私は私の質問で述べたのと同じエラーをまだ得ています。この問題に対して別の提案がありますか? – pimmes111