44 static std::map<std::string, visionx::ImageType> nameToTypeMap;
47 if (nameToTypeMap.empty())
49 nameToTypeMap[
"bayer-pattern"] = visionx::eBayerPattern;
50 nameToTypeMap[
"gray-scale"] = visionx::eGrayScale;
51 nameToTypeMap[
"rgb"] = visionx::eRgb;
52 nameToTypeMap[
"float-1-channel"] = visionx::eFloat1Channel;
53 nameToTypeMap[
"float-3-channels"] = visionx::eFloat3Channels;
56 std::string lowerCaseTypeName = imageTypeName;
58 lowerCaseTypeName.begin(), lowerCaseTypeName.end(), lowerCaseTypeName.begin(), ::tolower);
60 std::map<std::string, visionx::ImageType>::iterator nameToTypeIter =
61 nameToTypeMap.find(lowerCaseTypeName);
63 if (nameToTypeIter == nameToTypeMap.end())
68 return nameToTypeIter->second;
99 static std::map<visionx::ImageType, CByteImage::ImageType> visionxTypeToIvtTypeMap;
102 if (visionxTypeToIvtTypeMap.empty())
104 visionxTypeToIvtTypeMap[visionx::eRgb] = CByteImage::eRGB24;
105 visionxTypeToIvtTypeMap[visionx::eGrayScale] = CByteImage::eGrayScale;
106 visionxTypeToIvtTypeMap[visionx::eBayerPattern] = CByteImage::eGrayScale;
109 std::map<visionx::ImageType, CByteImage::ImageType>::iterator visionxTypeToIvtTypeIter =
110 visionxTypeToIvtTypeMap.find(visionxImageType);
112 if (visionxTypeToIvtTypeIter == visionxTypeToIvtTypeMap.end())
118 return visionxTypeToIvtTypeIter->second;
124 switch (visionxBayerPatternType)
126 case visionx::eBayerPatternBg:
127 return ::ImageProcessor::eBayerBG;
129 case visionx::eBayerPatternGb:
130 return ::ImageProcessor::eBayerGB;
132 case visionx::eBayerPatternGr:
133 return ::ImageProcessor::eBayerGR;
135 case visionx::eBayerPatternRg:
136 return ::ImageProcessor::eBayerRG;
141 return ::ImageProcessor::eBayerRG;
149 switch (imageDimension.width)
152 return CVideoCaptureInterface::eNone;
155 return CVideoCaptureInterface::e320x240;
158 return CVideoCaptureInterface::e640x480;
161 return CVideoCaptureInterface::e800x600;
164 return CVideoCaptureInterface::e768x576;
167 return CVideoCaptureInterface::e1024x768;
170 return CVideoCaptureInterface::e1280x960;
173 return CVideoCaptureInterface::e1600x1200;
176 return CVideoCaptureInterface::eNone;
182 using FrameRateRange = std::pair<float, float>;
184 static std::map<FrameRateRange, CVideoCaptureInterface::FrameRate> frameRateMap;
186 using FrameRateMapIter = std::map<FrameRateRange, CVideoCaptureInterface::FrameRate>::iterator;
188 if (frameRateMap.empty())
190 frameRateMap[FrameRateRange(0.f, 1.875f + 1.875f / 2)] = CVideoCaptureInterface::e1_875fps;
191 frameRateMap[FrameRateRange(1.875f + 1.875f / 2, 3.75f + 1.875f)] =
192 CVideoCaptureInterface::e3_75fps;
193 frameRateMap[FrameRateRange(3.75f + 1.875f, 7.5f + 3.75f)] =
194 CVideoCaptureInterface::e7_5fps;
195 frameRateMap[FrameRateRange(7.5f + 3.75f, 15.f + 7.5f)] = CVideoCaptureInterface::e15fps;
196 frameRateMap[FrameRateRange(15.f + 7.5f, 30.f + 15.f)] = CVideoCaptureInterface::e30fps;
197 frameRateMap[FrameRateRange(30.f + 15.f, 1024.f)] = CVideoCaptureInterface::e60fps;
200 FrameRateMapIter iter = frameRateMap.begin();
202 while (iter != frameRateMap.end())
204 if (frameRate >= iter->first.first && frameRate < iter->first.second)
309 CStereoCalibration* ivtStereoCalibration =
new CStereoCalibration();
311 CCalibration ivtCalibrationLeft;
312 CCalibration ivtCalibrationRight;
314 const visionx::CameraParameters& cameraParamLeft =
315 stereoCalibration.calibrationLeft.cameraParam;
316 const visionx::CameraParameters& cameraParamRight =
317 stereoCalibration.calibrationRight.cameraParam;
319 Mat3d R =
convert(cameraParamLeft.rotation);
320 Vec3d t =
convert(cameraParamLeft.translation);
324 ivtCalibrationLeft.SetCameraParameters(cameraParamLeft.focalLength[0],
325 cameraParamLeft.focalLength[1],
326 cameraParamLeft.principalPoint[0],
327 cameraParamLeft.principalPoint[1],
328 cameraParamLeft.distortion[0],
329 cameraParamLeft.distortion[1],
330 cameraParamLeft.distortion[2],
331 cameraParamLeft.distortion[3],
334 cameraParamLeft.width,
335 cameraParamLeft.height);
337 R =
convert(cameraParamRight.rotation);
338 t =
convert(cameraParamRight.translation);
343 ivtCalibrationRight.SetCameraParameters(cameraParamRight.focalLength[0],
344 cameraParamRight.focalLength[1],
345 cameraParamRight.principalPoint[0],
346 cameraParamRight.principalPoint[1],
347 cameraParamRight.distortion[0],
348 cameraParamRight.distortion[1],
349 cameraParamRight.distortion[2],
350 cameraParamRight.distortion[3],
353 cameraParamRight.width,
354 cameraParamRight.height);
356 ivtStereoCalibration->SetSingleCalibrations(ivtCalibrationLeft, ivtCalibrationRight);
358 ivtStereoCalibration->rectificationHomographyLeft =
359 convert(stereoCalibration.rectificationHomographyLeft);
360 ivtStereoCalibration->rectificationHomographyRight =
361 convert(stereoCalibration.rectificationHomographyRight);
363 return ivtStereoCalibration;
369 CCalibration* ivtCalibration =
new CCalibration();
371 const visionx::CameraParameters& cameraParam = calibration.cameraParam;
373 Mat3d R =
convert(cameraParam.rotation);
374 Vec3d t =
convert(cameraParam.translation);
376 ivtCalibration->SetCameraParameters(cameraParam.focalLength[0],
377 cameraParam.focalLength[1],
378 cameraParam.principalPoint[0],
379 cameraParam.principalPoint[1],
380 cameraParam.distortion[0],
381 cameraParam.distortion[1],
382 cameraParam.distortion[2],
383 cameraParam.distortion[3],
389 return ivtCalibration;
395 visionx::StereoCalibration stereoCalibration;
397 const CCalibration::CCameraParameters& ivtCalibParamLeft =
398 ivtStereoCalibration.GetLeftCalibration()->GetCameraParameters();
399 const CCalibration::CCameraParameters& ivtCalibParamRight =
400 ivtStereoCalibration.GetRightCalibration()->GetCameraParameters();
402 visionx::CameraParameters& cameraParamLeft = stereoCalibration.calibrationLeft.cameraParam;
403 visionx::CameraParameters& cameraParamRight = stereoCalibration.calibrationRight.cameraParam;
406 cameraParamLeft.width = ivtCalibParamLeft.width;
407 cameraParamLeft.height = ivtCalibParamLeft.height;
409 cameraParamLeft.principalPoint =
convert(ivtCalibParamLeft.principalPoint);
410 cameraParamLeft.focalLength =
convert(ivtCalibParamLeft.focalLength);
411 cameraParamLeft.rotation =
convert(ivtCalibParamLeft.rotation);
412 cameraParamLeft.translation =
convert(ivtCalibParamLeft.translation);
414 cameraParamLeft.distortion.push_back(ivtCalibParamLeft.distortion[0]);
415 cameraParamLeft.distortion.push_back(ivtCalibParamLeft.distortion[1]);
416 cameraParamLeft.distortion.push_back(ivtCalibParamLeft.distortion[2]);
417 cameraParamLeft.distortion.push_back(ivtCalibParamLeft.distortion[3]);
420 cameraParamRight.width = ivtCalibParamRight.width;
421 cameraParamRight.height = ivtCalibParamRight.height;
423 cameraParamRight.principalPoint =
convert(ivtCalibParamRight.principalPoint);
424 cameraParamRight.focalLength =
convert(ivtCalibParamRight.focalLength);
425 cameraParamRight.rotation =
convert(ivtCalibParamRight.rotation);
426 cameraParamRight.translation =
convert(ivtCalibParamRight.translation);
428 cameraParamRight.distortion.push_back(ivtCalibParamRight.distortion[0]);
429 cameraParamRight.distortion.push_back(ivtCalibParamRight.distortion[1]);
430 cameraParamRight.distortion.push_back(ivtCalibParamRight.distortion[2]);
431 cameraParamRight.distortion.push_back(ivtCalibParamRight.distortion[3]);
433 stereoCalibration.rectificationHomographyLeft =
434 convert(ivtStereoCalibration.rectificationHomographyLeft);
435 stereoCalibration.rectificationHomographyRight =
436 convert(ivtStereoCalibration.rectificationHomographyRight);
438 return stereoCalibration;
444 visionx::MonocularCalibration calibration;
445 const CCalibration::CCameraParameters& ivtCalibParam = ivtCalibration.GetCameraParameters();
447 calibration.cameraParam.width = ivtCalibParam.width;
448 calibration.cameraParam.height = ivtCalibParam.height;
450 calibration.cameraParam.principalPoint =
convert(ivtCalibParam.principalPoint);
451 calibration.cameraParam.focalLength =
convert(ivtCalibParam.focalLength);
452 calibration.cameraParam.rotation =
convert(ivtCalibParam.rotation);
453 calibration.cameraParam.translation =
convert(ivtCalibParam.translation);
455 calibration.cameraParam.distortion.push_back(ivtCalibParam.distortion[0]);
456 calibration.cameraParam.distortion.push_back(ivtCalibParam.distortion[1]);
457 calibration.cameraParam.distortion.push_back(ivtCalibParam.distortion[2]);
458 calibration.cameraParam.distortion.push_back(ivtCalibParam.distortion[3]);
466 visionx::types::Region region;
469 region.nPixels = ivtRegion.nPixels;
471 region.minX = ivtRegion.min_x;
472 region.maxX = ivtRegion.max_x;
473 region.minY = ivtRegion.min_y;
474 region.maxY = ivtRegion.max_y;
476 region.ratio = ivtRegion.ratio;
552 Object3DEntry ivtObject3DEntry;
554 ivtObject3DEntry.region_left =
convert(object3DEntry.regionLeft);
555 ivtObject3DEntry.region_right =
convert(object3DEntry.regionRight);
556 ivtObject3DEntry.region_id_left = object3DEntry.regionIdLeft;
557 ivtObject3DEntry.region_id_right = object3DEntry.regionIdRight;
558 ivtObject3DEntry.type =
convert(object3DEntry.type);
559 ivtObject3DEntry.color =
convert(object3DEntry.color);
560 ivtObject3DEntry.pose =
convert(object3DEntry.pose);
561 ivtObject3DEntry.world_point =
convert(object3DEntry.worldPoint);
562 ivtObject3DEntry.orientation =
convert(object3DEntry.orientation);
563 ivtObject3DEntry.sName =
"";
564 ivtObject3DEntry.sName += object3DEntry.name;
565 ivtObject3DEntry.sOivFilePath =
"";
567 ivtObject3DEntry.data =
nullptr;
568 ivtObject3DEntry.class_id = object3DEntry.classId;
569 ivtObject3DEntry.quality = object3DEntry.quality;
570 ivtObject3DEntry.quality2 = object3DEntry.quality2;
572 return ivtObject3DEntry;
578 visionx::types::Object3DEntry object3DEntry;
580 object3DEntry.regionLeft =
convert(ivtObject3DEntry.region_left);
581 object3DEntry.regionRight =
convert(ivtObject3DEntry.region_right);
582 object3DEntry.regionIdLeft = ivtObject3DEntry.region_id_left;
583 object3DEntry.regionIdRight = ivtObject3DEntry.region_id_right;
584 object3DEntry.type =
convert(ivtObject3DEntry.type);
585 object3DEntry.color =
convert(ivtObject3DEntry.color);
586 object3DEntry.pose =
convert(ivtObject3DEntry.pose);
587 object3DEntry.worldPoint =
convert(ivtObject3DEntry.world_point);
588 object3DEntry.orientation =
convert(ivtObject3DEntry.orientation);
589 object3DEntry.name =
"";
590 object3DEntry.name += ivtObject3DEntry.sName;
593 object3DEntry.classId = ivtObject3DEntry.class_id;
594 object3DEntry.quality = ivtObject3DEntry.quality;
595 object3DEntry.quality2 = ivtObject3DEntry.quality2;
597 return object3DEntry;
void convert(const std::filesystem::path &in, const std::filesystem::path &out, bool print_progress)
Performs the actual conversion.