Я понимаю, что здесь есть ряд подобных вопросов, но я считаю, что моя ситуация достаточно уникальна, чтобы оправдать свой собственный пост.Производительность OpenCV в реальном времени в Java против C++
Я работаю над «визуальным проводником». Я создал программу, которая отслеживает жесты человека и экстраполирует темп (в ударах в минуту) с этих жестов. Теперь я хотел бы отобразить измеренный темп в MIDI-файле, который играет, пока человек проводит. В принципе, я хотел бы, чтобы программа позволяла кому-то проводить синтезированную пьесу, где темп воспроизводимого файла зависит от жестов проводника в реальном времени. Я написал это на C++, используя библиотеки OpenCV.
Вот где вещи становятся интересными/волосатыми. Прямое изменение темпа MIDI-файла выглядит сложной задачей, и, учитывая ограниченное время, которое я оставил этим летом, я решил посмотреть в другом месте. Мне удалось найти интерфейс Sequencer в Java API, который имеет прекрасный метод под названием setTempoinBPM
. Он делает именно то, что мне нужно; Мне просто не удалось заставить его работать в моем коде на C++.
Я попытался создать свою собственную JVM для вызова методов Java в коде C++, но безрезультатно. Я также пробовал называть Java-программы, передавая соответствующие аргументы командной строки в system()
, но я не могу изменить темп MIDI-файла после начала воспроизведения с использованием этого подхода.
Я рассматриваю возможность преобразования моего кода на C++ в Java-код, чтобы напрямую позвонить setTempoinBPM()
, но я слышал противоречивые сообщения о том, повлияет ли это на производительность OpenCV.
Хотелось бы, чтобы ваше мнение: производительность OpenCV на Java сопоставима с показателями C++, которые могли бы преобразовать мой проект в Java? (Если вы случайно знаете, как легко изменять темп воспроизводимого MIDI-трека, не стесняйтесь делиться этим.)
Так много вопросов в одном посте. Я действительно не знаю, почему вы переходите на переписывание всего, что у вас уже так легко. Я не знаю хорошего бесплатного MIDI API для C++, но я играл с [Java Invocation API] (http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/invocation. html), и это действительно было не так сложно. Вы должны изучить это, если вы не найдете хороший C++ lib. – PeterT
Жаль, если это было неясно - ссылка, которую вы опубликовали, была именно тем, что я пытался сделать с созданием моей собственной JVM, и по какой-то причине я не могу заставить ее работать. (Наверное, что-то действительно просто, я забываю, но все же.) Я ценю ваш ответ, хотя! – Connor
@ Коннектор звучит как классный проект! –