#include <iostream>
#include <string>
#include <cvb/device_factory.hpp>
#include <cvb/global.hpp>
#include <cvb/driver/image_stream.hpp>
static const constexpr int DELIVERABLE_COUNT = 10;
int main()
{
try
{
Cvb::DiscoverFlags::IncludeMockTL
);
for (auto n = 0; (n < infoList.size()) && accessToken.empty(); ++n)
if (infoList.at(n).AccessToken().find("MockTL") != std::string::npos)
accessToken = infoList.at(n).AccessToken();
if (accessToken.empty())
throw std::runtime_error("Could not find CVMockTL.");
for (auto m = 0; m < DELIVERABLE_COUNT; ++m)
{
std::cout << "Acquisition #" << m <<"\t";
auto waitResult = stream->WaitFor(std::chrono::seconds(10));
if (std::get<Cvb::WaitStatus>(waitResult) == Cvb::WaitStatus::Timeout)
throw std::runtime_error("Acquisition timeout.");
auto deliverable = std::get<Cvb::MultiPartImagePtr>(waitResult);
for (auto n = 0; n < deliverable->NumParts(); ++n)
{
auto item = deliverable->GetPartAt(n);
{
std::cout << "Image property: Part index: " << n << ", Width : " << image->Width()
<< ", Height : " << image->Height()<<", ";
}
}
auto& enumerator = std::get<Cvb::NodeMapEnumerator>(waitResult);
const auto names = enumerator.Names();
if (std::all_of(names.begin(), names.end(), [](
const Cvb::String& name) { return name !=
"VinBuffer"; }))
throw std::runtime_error("The nodemap enumerator of this container does not contain a VinBuffer node map.");
auto nodeMap = enumerator.NodeMap(CVB_LIT("VinBuffer"));
auto isIncompleteNode = nodeMap->TryGetNode<
Cvb::BooleanNode>(CVB_LIT(
"IsIncomplete"));
std::cout <<
"IsIncomplete: " << isIncompleteNode->
Value() <<
", ";
std::cout <<
"FrameID: " << frameIDNode->
Value() <<
", ";
auto sizeFilledNode = nodeMap->TryGetNode<
Cvb::IntegerNode>(CVB_LIT(
"SizeFilled"));
std::cout <<
"SizeFilled: " << sizeFilledNode->
Value() <<
", ";
std::cout <<
"Width: " << widthNode->
Value() <<
", ";
std::cout <<
"Height: " << heightNode->
Value() <<
", ";
std::cout <<
"XPadding: " << xPaddingNode->
Value() <<
", ";
std::cout <<
"YPadding: " << yPaddingNode->
Value() <<
", ";
auto timestampNode = nodeMap->TryGetNode<
Cvb::IntegerNode>(CVB_LIT(
"Timestamp"));
std::cout <<
"Timestamp: " << timestampNode->
Value()<<std::endl;
}
stream->TryAbort();
}
catch (const std::exception& e)
{
std::cout << e.what() << std::endl;
}
return 0;
}
static std::vector< DiscoveryInformation > Discover()
static std::shared_ptr< T > Open(const String &provider, AcquisitionStack acquisitionStack=AcquisitionStack::PreferVin)
std::int64_t Value() const
const variant_alternative_t< I, variant< TS... > > & get(const variant< TS... > &var)
bool holds_alternative(const variant< TS... > &var) noexcept