Nano Hash - криптовалюты, майнинг, программирование

LabVIEW, C++ DLL и образы IMAQ

Я знаком с написанием DLL, которые можно вызывать из LabVIEW, но мне любопытно, каким может быть правильный способ передачи изображений IMAQ в DLL. Вот один из способов, который я нашел для этого — я также использую аналогичный механизм для отправки экземпляров изображения IMAQ из моей DLL в структуру событий.

Пример схемы

Обратите внимание, что узлы, которые преобразуют экземпляры образа в/из кластеров, расположены в ${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb и называются IMAQ Image Datatype to Image Cluster.vi и IMAQ Image Cluster to Image Datatype.vi соответственно. Создаваемый кластер состоит из имени образа и целочисленного значения, представляющего адрес указателя на тип Image* в C/C++.

Это лучший способ сделать это, или есть лучший способ?

15.02.2012

  • Одна проблема, которую я вижу, заключается в том, что узел преобразования дает U32. Если у вас 64-битная версия, могут возникнуть проблемы... 16.02.2012
  • Да, я заметил, что это происходит потому, что я определяю параметр для вызова функции в DLL как Pointer Sized Integer. Поскольку я работаю в 32-битной среде, это не влияет на меня напрямую — любопытно, что 32-битный вывод имеет место, поскольку я запускаю NI Vision 2011, который претендует на имеют 64-битную поддержку. Глядя на вывод кластера выше, это не совсем так... 16.02.2012
  • Хорошо, я почти уверен, что в 64-битной среде он дает 64-битный указатель 16.02.2012

Ответы:


1

Я использую другой подход, помещая всю информацию об изображении (указатель, размеры и т. д.) в кластер, используя следующий код:

введите здесь описание изображения

Затем кластер передается функции DLL, выполняющей операции с пикселями (конечно, без изменения размера), а затем вызывает указатель пикселя unmap IMAQ.


РЕДАКТИРОВАТЬ после обсуждения:

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

16.02.2012
  • Это кажется немного трудоемким, особенно если учесть, что вы можете получить доступ ко всей этой информации из структуры imageInfo, которая возвращается по ссылке при вызове imaqGetImageInfo(_pImage, &imageInfo), где адрес, хранящийся в _pImage, эквивалентен целому числу, переданному в примере в вопрос выше. 16.02.2012
  • не знал этого! как называется noe перед развязкой кластера? в любом случае ваше решение кажется лучше моего, поэтому вы должны использовать его, если оно работает :-) 16.02.2012
  • Оба узла преобразования расположены в ${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb. Жаль, что они не включены в палитру IMAQ по умолчанию, если честно... 16.02.2012
  • У меня нет NI Vision, поэтому я не знал об этом 16.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..