gpt4 book ai didi

Android OpenCV - 对象跟踪

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:55 26 4
gpt4 key购买 nike

我使用特征检测实现对象跟踪,但出现以下错误:

12-19 20:59:16.943: E/cv::error()(31858): OpenCV Error: Assertion failed (src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean), file /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp, line 97 12-19 20:59:16.943: E/org.opencv.android.Utils(31858): nMatToBitmap catched cv::Exception: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean) 12-19 20:59:16.943: E/CameraBridge(31858): Mat type: Mat [ 820*2672*CV_8UC3, isCont=true, isSubmat=false, nativeObj=0x55650380, dataAddr=0x5ec20010 ] 12-19 20:59:16.943: E/CameraBridge(31858): Bitmap type: 960*720 12-19 20:59:16.943: E/CameraBridge(31858): Utils.matToBitmap() throws an exception: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)

这是代码:

    public void onCameraViewStarted(int width, int height) {
mRgba = new Mat();
mGray = new Mat();
mView = new Mat();
mObject = new Mat();
}

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();

switch (viewMode) {
case VIEW_MODE_RGBA:

return mRgba;

case VIEW_MODE_FeatureDetect:
try {
mGray = inputFrame.gray();
mObject = new Mat();
mObject = Highgui.imread(Environment.getExternalStorageDirectory()+ "/Android/data/" + getApplicationContext().getPackageName() + "/Files/Object.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
mView = mGray.clone();

FeatureDetector myFeatureDetector = FeatureDetector.create(FeatureDetector.ORB);

MatOfKeyPoint keypoints = new MatOfKeyPoint();
myFeatureDetector.detect(mGray, keypoints);

MatOfKeyPoint objectkeypoints = new MatOfKeyPoint();
myFeatureDetector.detect(mObject, objectkeypoints);

DescriptorExtractor Extractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
Mat sourceDescriptors = new Mat();
Mat objectDescriptors = new Mat();
Extractor.compute(mGray, keypoints, sourceDescriptors);
Extractor.compute(mGray, objectkeypoints, objectDescriptors);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE);

MatOfDMatch matches = new MatOfDMatch();
matcher.match(sourceDescriptors, objectDescriptors, matches);

Features2d.drawMatches(mGray, keypoints, mObject, objectkeypoints, matches, mView);

return mView;
} catch (Exception e) {
Log.d("Exception",e.getMessage());
}

}

return mRgba;
}

它不能在屏幕上显示对象,但我需要一些信息,我可以放置矩形或其他可以标记对象我想要跟踪的内容。抱歉我的英语不好,我希望你明白我在问什么,谢谢你的任何建议。

最佳答案

感谢Darshan的建议,我解决了问题,需要调整图片大小,在 Features2d.drawMatches(mGray, keypoints, mObject, objectkeypoints, matches, mView); 下方添加此代码,如下所示code> 然后它就可以工作了。

关于Android OpenCV - 对象跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20704331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com