Cvloadimage opencv не работает

OpenCV cvLoadImage () не загружает изображения в отладчике Visual Studio?

Я пытаюсь разработать простой приветственный мир для OpenCV, но у меня заканчиваются идеи, почему он не работает.

Когда я компилирую и запускаю этот код:

У меня вместо указанного файла .jpg получается серый прямоугольник размером примерно 200×200. Если я использую другой jpg, я получаю такое же окно, а если я вставляю недопустимое имя файла, я получаю очень крошечное окно (ожидалось).

Я использую Visual Studio 2008 под Windows 7 Professional.

Кажется, что большинство программ-примеров работают нормально, поэтому я вдвойне смущен тем, как этот код отлично загружает образцы jpgs, но в приведенном выше коде он не работает (даже попробовал образец jpeg).

Обновить

Исполняемые файлы, созданные при компиляции, работают нормально, однако отладчик Visual Studio 2008 загружает нулевой указатель в img каждый раз, когда я пытаюсь запустить отладчик, независимо от того, явное или неявное расположение файла.

4 ответа

На самом деле кажется, что существует проблема с путем к myjpeg.jpg , поскольку текущий каталог может быть другим, когда вы работаете под отладчиком.

По умолчанию текущий каталог, который использует отладчик Visual Studio, — это каталог, содержащий файл .vcproj , но вы можете изменить его в свойствах проекта (Отладка -> Рабочий каталог).

Вы на 100% уверены, что правильно проходите абсолютный путь? Попробуйте передать тот же путь к fopen и посмотрите, возвращает ли он также NULL . Если да, значит, путь неверный.

Если вы хотите точно узнать, какой файл пытается открыть библиотека, вы можете использовать Project Monitor. с фильтром на myjpeg.jpg .

Я столкнулся с той же проблемой. Версия Debug не загружает изображение, но когда я компилирую и связываю его как Release, он работает. надеюсь, это поможет

Попробуйте добавить HAVE_JPEG в определения препроцессора.

Какую версию OpenCV вы используете? Я пробовал ваш код в последней версии (OpenCV2.0), и он отлично работает. Вы можете загрузить OpenCV2.0 с здесь.

Если вам нужна последняя сборка, вы можете получить ее с помощью SVN здесь .

Источник

JavaCV/OpenCV: cvLoadImage не работает

Я установил библиотеки JavaCV/OpenCV, и у меня возникла проблема с базовым примером кода.

В соответствии с несколькими примерами, которые я рассмотрел, этот код должен загружать изображение:

Но, когда я запускаю, я получаю ошибку «не могу найти символ».

Поскольку это мой первый раз, используя его, я не уверен, что я испортил установку или нет.

В соответствии с новейшей версией JavaCV у меня есть правильная версия OpenCV. Я также импортировал все jar файлы JavaCV. Насколько я могу судить, у меня также есть все пути, установленные правильно.

Кто-нибудь знает, в чем проблема?

Ошибка при попытке запустить его:

Исключение в потоке «main» java.lang.RuntimeException: Некомпилируемый исходный код — Ошибочный тип sym: cvLoadImage на javacv.demo.main(demo.java:17)

Java Результат: 1

Похоже, он утверждает, что cvLoadImage не принимает строку в качестве аргумента.

Прогулка вокруг того, что я нахожу для вас, — загрузить изображение с помощью ImageIO и пропустить его позже IplImage

Это решило мою проблему: import static org.bytedeco.javacpp.opencv_imgcodecs.*;

Вы должны добавить этот оператор импорта:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;
Это необходимо для использования статического метода cvLoadImage без использования имени класса.

С javacv 0,9 вы должны import static org.bytedeco.javacpp.opencv_highgui.*;

Вам нужно import com.googlecode.javacv.cpp.opencv_highgui.*;

Это может быть старым, но для тех, кто наткнулся на эту проблему, как я сейчас,
вот как я решил это и почему:

Первая ошибка OP: Исключение в потоке «main» java.lang.RuntimeException: Некомпилируемый исходный код — Ошибочный тип sym: cvLoadImage в javacv.demo.main(demo.java:17)

Это означает, что компилятор не может найти метод cvLoadImage, который вы пытаетесь вызвать.

cvLoadImage является статическим методом в JavaCPP.
В частности, это статический метод в классе opencv_imgcodecs.

Чтобы решить эту проблему, нужно сначала указать импорт класса opencv_imgcodecs.

Это можно сделать, добавив импорт:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;

Это, в свою очередь, приведет к тому, что класс opencv_imgcodecs будет использоваться внутри вашего класса, а также его статические методы и другие функции.

Источник

JavaCV / OpenCV: cvLoadImage не работает

Я установил библиотеки JavaCV / OpenCV, и у меня проблема с базовым кодом примера.

Согласно нескольким примерам, которые я рассмотрел, этот код должен загружать изображение:

Но когда я запускаю это, я получаю ошибку «не могу найти символ».

Поскольку я использую его впервые, я не уверен, испортил ли я установку или нет.

Согласно последнему файлу readme JavaCV, у меня есть правильная версия OpenCV. У меня также есть все импортированные файлы jar JavaCV. Насколько я могу судить, у меня тоже все пути установлены правильно.

Кто-нибудь знает, в чем проблема?

Ошибка при попытке запустить:

Исключение в потоке «main» java.lang.RuntimeException: Некомпилируемый исходный код — Ошибочный тип символьного файла: cvLoadImage в javacv.demo.main (demo.java:17)

Результат Java: 1

Похоже, он утверждает, что cvLoadImage не принимает строку в качестве аргумента.

9 ответов

Я считаю, что вам нужно загрузить изображение из ImageIO и передать его позже в IplImage

В моем случае проблема возникла при работе ракеля в режиме отладки. Попробуйте запустить в обычном режиме.

Недавно возникла такая же проблема. если вы используете javacv-0.10 (более поздний на данный момент), импортируйте вручную этот:

Но источник JRE проекта должен быть выше 1.5

Это может быть старым, но для тех, кто столкнулся с этой проблемой, как и я, вот как я решил ее и почему:

Первая ошибка OP: Исключение в потоке «main» java.lang.RuntimeException: Некомпилируемый исходный код — Ошибочный символьный тип: cvLoadImage в javacv.demo.main (demo.java:17)

Это указывает на то, что компилятор не может найти метод cvLoadImage, который вы пытаетесь вызвать.

CvLoadImage — это статический метод в JavaCPP. В частности, это статический метод класса opencv_imgcodecs.

Чтобы решить эту проблему, необходимо сначала указать импорт класса opencv_imgcodecs.

Это можно сделать, добавив импорт:
импортировать статический org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;

Это, в свою очередь, приведет к тому, что класс opencv_imgcodecs можно будет использовать в вашем классе вместе с его статическими методами и другими функциями.

Надеюсь, это поможет.

У меня такая же ошибка, я импортировал следующий пакет, проблема решена.

Источник

JavaCV/OpenCV: cvLoadImage not working

I installed the JavaCV/OpenCV libraries, and I’m having a problem with the basic example code.

According to several examples that I have looked at, this code should load an image:

But, when I run that I get a «cannot find symbol» error.

Since this is my first time using it, I’m not sure if I messed the install up or not.

According to the newest JavaCV readme, I do have the correct version of OpenCV. I also have all the JavaCV jar files imported. As far as I can tell, I also have all the paths set correctly too.

Anyone know what the problem is?

Error when I try to run it:

Exception in thread «main» java.lang.RuntimeException: Uncompilable source code — Erroneous sym type: cvLoadImage at javacv.demo.main(demo.java:17)

Seems like it is claiming cvLoadImage doesn’t take a string as an argument.

9 Answers 9

A walk around that i find for you is to load the image by ImageIO and passe it later to IplImage

This solved my problem: import static org.bytedeco.javacpp.opencv_imgcodecs.*;

You have to add this import statement:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage; This is required so that the static method cvLoadImage can be used without using the class name.

You have to import com.googlecode.javacv.cpp.opencv_highgui.*;

With javacv 0,9 you have to import static org.bytedeco.javacpp.opencv_highgui.*;

I got the same error then, i imported the following package, problem solved.

import static com.googlecode.javacv.cpp.opencv_highgui.*;

This might be old but for those who stumbled upon this problem like me just now, here is how I solved it and why:

First OP’s error: Exception in thread «main» java.lang.RuntimeException: Uncompilable source code — Erroneous sym type: cvLoadImage at javacv.demo.main(demo.java:17)

This indicates that the compiler cannot find the cvLoadImage method that you are trying to call.

cvLoadImage is a static method under JavaCPP. Specifically it is a static method under opencv_imgcodecs class.

To solve this issue one must first specify the import of the opencv_imgcodecs class.

This can be done by adding the import:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;

This in turn would result for the opencv_imgcodecs class to be usable within your class along with its static methods and other functions.

Источник

cvLoadimage перестает работать во время выполнения

Я уже некоторое время работаю над программой распознавания изображений, но вдруг заметил, что когда я тестирую свою программу в течение более длительного периода времени, функция cvLoadImage иногда перестает возвращать изображение. Я не вижу четкой закономерности или времени, когда это происходит, но после того, как он потерпит неудачу один раз, он будет продолжать терпеть неудачу для rest программы, Пока я не перезапущусь снова. Этот фрагмент кода запускается только время от времени, чтобы обновить мой пользовательский интерфейс.

Есть несколько причин, которые я уже нашел для cvLoadImage неудачи, которые я проверил:

  • Путь статичен и работает ранее в программе так что файл есть
  • Я выпускаю изображение, и нет никаких других утечек памяти, которые могли бы вызвать это
  • .jpg не обновляется при попытке загрузить его
  • У меня установлены все нужные библиотеки, так как cvLoadImage работает раньше

Одно из решений состоит в том, чтобы загрузить изображение только один раз и постоянно обновлять его из памяти, но я хотел бы выяснить, почему это происходит и как это исправить.

3 ответа

Я только что прочитал в книге OCA (Oracle Certified Associate), что: Некоторые исключения приведений могут быть обнаружены как ошибки во время компиляции, но другие могут быть обнаружены только во время выполнения. Теперь я пытаюсь найти пример для обоих случаев: время компиляции и время.

Можно ли автоматически сохранить записную книжку во время работы e kernel и выполнения ячейки? Каждый раз, когда я выполняю ячейку в течение длительного времени, она перестает автоматически сохраняться и снова начинает сохраняться после завершения выполнения ячейки. Это поведение по умолчанию.

Вы используете последнюю версию OpenCV (2.3.1)?

Еще одна вещь, на которую следует обратить внимание, заключается в том, что все, что находится в //do stuff , может привести к утечке памяти, и через некоторое время cvLoadImage() выйдет из строя, потому что вашей системе просто не хватает памяти для загрузки новых образов.

Правда в том, что существует простой тест, чтобы определить, находится ли проблема в OpenCV или в вашем коде: напишите минимальное приложение, которое загружает одно и то же изображение N раз. Не делайте ничего внутри цикла, кроме вызова cvLoadImage() , за которым следует cvReleaseImage() .

Если это простое приложение потерпит неудачу, это может быть проблемой в OpenCV стороне вещей. Если нет, вы знаете, что делаете что-то не так в своем коде.

будьте осторожны, когда вы решите использовать относительный путь, вам лучше дважды проверить свой рабочий каталог. вот где ваши .exe будут казнены. или, скажем, ваша программа меняет рабочий каталог во время выполнения ?

Вы также должны установить свой UIframe на NULL после его освобождения. Выпускать его-это нормально, но может быть даже ошибка, которая просто вызывает проблему до назначения NULL, кто знает?? 🙂

Это гарантирует, что ничто не удержит ваш файл на всякий случай. Прочитайте этот вопрос на SO для получения дополнительных объяснений.

Похожие вопросы:

У меня проблема с java.util.logging. Все работает просто отлично с самого начала, но через некоторое время регистратор просто перестает записывать какие-либо данные в файл, и я понятия не имею.

Я хочу добавить индикатор выполнения во время вызова gwt-rpc, который показывает процент выполнения задачи. Кто-нибудь может помочь мне с куском кода для того же самого ? Кроме того, я загружаю.

Я пытаюсь использовать несколько запросов thread curl в своем приложении. Проблема в том, что во время запросов curl_multi приложение перестает отвечать на запросы (другие запросы к нему просто.

Я только что прочитал в книге OCA (Oracle Certified Associate), что: Некоторые исключения приведений могут быть обнаружены как ошибки во время компиляции, но другие могут быть обнаружены только во.

Можно ли автоматически сохранить записную книжку во время работы e kernel и выполнения ячейки? Каждый раз, когда я выполняю ячейку в течение длительного времени, она перестает автоматически.

Мое приложение iOS перестает работать после возникновения ошибки во время выполнения. Я ловлю ошибку как исключение. Я хотел бы, чтобы приложение продолжало работать до следующих шагов после.

Я недавно начал работать с corda и пытаюсь создать POC. Существует одно требование — создать узел corda во время выполнения. Я искал в документации corda, но не повезло. Есть ли какой-нибудь способ.

Я пишу свой код в блоках кода и получаю эту ошибку во время выполнения: Возвращенный процесс (0xC0000005) Это мой код Я считаю, что это как-то связано с тем, как я называю свои функции главный : int.

Я меняю sprite на компоненте изображения во время выполнения, и это приводит к тому, что он перестает изменять размер с помощью RectTransform изображения и просто остается фиксированным размером.

WPF — почему мой UserControl перестает работать, когда я раскомментирую комментируемую строку? Когда я комментировал свой элемент управления, он добавлял строки при запуске, когда я раскомментировал.

Источник

Читайте также:  Как настроить оверлок лидер vs370d
Оцените статью