我想對從android設備攝像頭捕獲的圖像進行預處理。需要建議:從相機處理彩色圖像; Android的; OpenCV的; NDK; C++
我可以描述我的應用程序的屍身這樣:
1)Java的一部分。
// Getting preview from camera.
public void onPreviewFrame(byte[] arg0, Camera arg1) {
if (imageFormat == ImageFormat.NV21) {
frameData = arg0; // private byte[] frameData = null;
}
}
// ...
// After some code - call native function.
ImageProcessing(width, height, frameData, output); // private int[] output= null;
// Setting output to bitmap, etc...
MyCameraPreview.setImageBitmap(bitmap); // Dislplay, etc...
2.)C++部分。 ImageProcessing
extern "C"
jboolean huge_prefix_ImageProcessing(
JNIEnv* env,
jobject thiz,
jint width,
jint height,
jbyteArray frameData,
jintArray output)
{
jbyte* pFrameData = env->GetByteArrayElements(frameData, 0);
jint* pOutput = env->GetIntArrayElements(output, 0);
Mat gray(height, width, CV_8UC1, (unsigned char *)pFrameData);
// Some processing and writing gray to result.
// ...
return true;
}
一切都適用於灰度圖像。但是現在我需要執行RGB圖像的處理。有人能以正確的方式給我一個建議嗎?我做了幾次嘗試:
- ImageProcessing函數內部將pFrameData轉換爲rgb格式(來自nv21)。
- 在函數onPreviewFrame中,將nv21更改爲RGB_565,並在圖像容器中進行了其他更改。
你沒有使用CvCameraViewFrame和onCameraFrame? http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html – auselen
沒有,我無論如何也不能使用它。但我現在會嘗試。 – str14821
因爲當我玩它時,灰色和RGB使用非常微不足道,所以我建議使用它們。 – auselen