Я работаю с ситом с использованием OpenCV SDK для андроид
Я сталкиваюсь с трудностями при составлении матчей между двумя изображениями, используярисунка соответствует с использованием OpenCV для андроид
Feature2d.drawMatches()
всякий раз, когда я запустить приложение он проходит через все шаги, но прекратились при достижении функции розыгрыша.
Вот полный код:
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("opencv_java");
System.loadLibrary("nonfree");
}
private ImageView imageView;
private FeatureDetector detector = FeatureDetector.create(FeatureDetector.SIFT);
DescriptorExtractor descriptorExtractor=DescriptorExtractor.create(DescriptorExtractor.SIFT);
DescriptorMatcher descriptorMatcher= DescriptorMatcher.create(3);
Bitmap inputImage;
Bitmap inputImage2;
Bitmap out;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(OpenCVLoader.initDebug()){
Toast.makeText(this,"Hiii",Toast.LENGTH_SHORT).show();}
inputImage = BitmapFactory.decodeResource(getResources(), R.drawable.object);
inputImage2 = BitmapFactory.decodeResource(getResources(), R.drawable.objecttest);
out = BitmapFactory.decodeResource(getResources(), R.drawable.test);
imageView = (ImageView) this.findViewById(R.id.imageView);
sift();
}
public void onResume() {
super.onResume();
}
public void sift() {
Mat rgba = new Mat();
Mat rgba2 = new Mat();
Mat desc=new Mat();
Mat desc2=new Mat();
MatOfDMatch matches=new MatOfDMatch();
Mat output=new Mat();
Utils.bitmapToMat(inputImage, rgba);
Utils.bitmapToMat(inputImage2, rgba2);
Utils.bitmapToMat(out, output);
MatOfKeyPoint keyPoints = new MatOfKeyPoint();
MatOfKeyPoint keyPoints2 = new MatOfKeyPoint();
Imgproc.cvtColor(rgba, rgba, Imgproc.COLOR_RGBA2GRAY);
Imgproc.cvtColor(rgba2, rgba2, Imgproc.COLOR_RGBA2GRAY);
detector.detect(rgba, keyPoints);
detector.detect(rgba2, keyPoints2);
descriptorExtractor.compute(rgba,keyPoints,desc);
descriptorExtractor.compute(rgba2,keyPoints2,desc2);
descriptorMatcher.match(desc,desc2,matches);
Features2d.drawMatches(rgba,keyPoints,rgba2,keyPoints2,matches,output);
Utils.matToBitmap(output, out);
imageView.setImageBitmap(out);
}
}
мне также нужно знать, просеять, является ли лучшим выбором для использования обнаружения сложных объектов в режиме реального времени?
Edit 1: Я заметил, что в настоящее время я получаю следующие ошибки
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows)
Fatal signal 11 (SIGSEGV), code 2, fault addr 0x12ce08e0 in tid 9971
вы получаете ошибка w а он останавливается? – Sunreef
Да, на самом деле я заметил это сейчас, и я обновил вопрос с сообщением об ошибке –