Я использую LabView и OpenCV, чтобы загрузить неизвестное количество 2D-изображений из папки (16-битная подпись) в LabView, а затем передать ее OpenCV, где вы делаете s.th. затем отправьте его обратно в LabView.
Вот мой подход, но он не сработал, надеюсь, вы можете мне помочь?
ОБНОВИТЬ:
Единственное, что не дало мне правильное значение пикселя, — это как получить доступ к 3D-массиву из LabView.
Вы читаете только одно изображение: только один путь и одно изображение IMAQ выходят из цикла for.
Мое предложение: поместите функцию чтения файла IMAQ в цикл for и включите автоиндексирование для изображения IMAQ (не забывайте менять имя изображения на каждой итерации цикла for).
Затем вы можете применить свою функцию OpenCV к каждому из прочитанных изображений.
Вы можете использовать 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