我試圖使用Android上的OpenCV中的Imgcodecs.imread
加載位於可繪製文件夾中的圖像,但是當我檢查圖像的數據時,它是null
。無法使用OpenCV加載圖像
這是我簡單的代碼加載圖像:
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mImageRGBA = inputFrame.rgba();
img_object = Imgcodecs.imread("D:\\Project_Android\\Car_Tracking_1\\app\\src\\main\\res\\drawable\\rear_of_car.png");
Log.i("aaa2", img_object.dump());
return mImageRGBA;
}
這是從功能logcat的信息:
06-26 00:27:15.056 24939-25059/com.example.bruce.car_tracking_1 I/aaa2: []
我在做什麼錯在這裏?我是否錯誤地找到路徑?還是我加載圖像不正確?
解決:
您好所有我用另一種方式解決我的問題。所以很多感謝sturkmen你的嘗試幫助
我使用可繪製文件夾中的加載圖像,這個圖像是一個位圖,並顯示在屏幕上,然後我將它轉換爲馬來使用它。 :)這是我的完整代碼。
第一,創建2個全局變量
ImageView imageview;
Bitmap icon;
然後,
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Resources res = getResources();
icon = BitmapFactory.decodeResource(res, R.drawable.rear_of_car);// get data from drawable folder
imageview.setImageBitmap(icon); // show data in imageview of screen
mOpenCvCameraView.enableView();
} break;
default: {super.onManagerConnected(status);} break;
}
}
};
public void onCameraViewStarted(int width, int height) {
img_object = new Mat(157, 140, CvType.CV_8UC1);
}
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mImageRGBA = inputFrame.rgba();
Utils.bitmapToMat(icon, img_object);//convert image bitmap to Mat to use it futher
Log.i("aaa", String.valueOf(img_object.cols()));
Log.i("aaa1", String.valueOf(img_object.rows()));
return mImageRGBA;
}
public void onCameraViewStopped() {
img_object.release();
}
記得加入activity_main.xml中
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentBottom="true" />
圖像視圖,把你的圖像繪製文件夾
是目前在你的android系統中的路徑? Isnt android僅限於Linux操作系統? – Micka
Hello Berriel,圖像路徑在可繪製文件夾中,在我的電腦中(不在SD卡或手機內存中)。我不明白第二個問題 – Bruce