Загрузка и Показать последовательность изображений

Я использую LabView и OpenCV, чтобы загрузить неизвестное количество 2D-изображений из папки (16-битная подпись) в LabView, а затем передать ее OpenCV, где вы делаете s.th. затем отправьте его обратно в LabView.

Вот мой подход, но он не сработал, надеюсь, вы можете мне помочь?

VI

Код

ОБНОВИТЬ:

Единственное, что не дало мне правильное значение пикселя, — это как получить доступ к 3D-массиву из LabView.

Код V2

VI V2

Вызов функции Lib

туннельный режим

-4

Решение

Вы читаете только одно изображение: только один путь и одно изображение IMAQ выходят из цикла for.

Мое предложение: поместите функцию чтения файла IMAQ в цикл for и включите автоиндексирование для изображения IMAQ (не забывайте менять имя изображения на каждой итерации цикла for).

Затем вы можете применить свою функцию OpenCV к каждому из прочитанных изображений.

0

Другие решения

Вы можете использовать std :: vector, содержащий путь для группы изображений.

Вы можете использовать функцию, подобную приведенной ниже, чтобы заполнить вектор относительным путем к изображениям:

std::vector<std::String> imagelistVector(std::string path)
{
std::vector<std::String> fn;
cv::glob(path,fn,false);
return fn;
}

который использует шаблон cv :: glob

использование, например:

vector<String> imglist=imagelistVector("data/*.jpg");

прочтет все изображения с расширением .jpg в локальной папке «data»

Затем вы можете использовать список для чтения всех изображений, используя цикл for, подобный следующему:

for (unsigned int i =0; i<imglist.size(); i++)
{
Mat img = imread(filelist.at(i), CV_LOAD_IMAGE_COLOR);
//do something with each image
}

Или, если вы хотите сохранить все изображения:

std::vector<cv::Mat> images;
for (unsigned int i =0; i<imglist.size(); i++)
{
Mat img = imread(filelist.at(i), CV_LOAD_IMAGE_COLOR);
images.push_back(img)
}
//do something with all or a group of images
-1

По вопросам рекламы [email protected]