opencv_conversions.cpp
Go to the documentation of this file.
2
3#include <cstring>
4
5#include <opencv2/imgproc.hpp>
6
8
9#include <VisionX/interface/components/Calibration.h>
10
11#include <Image/ByteImage.h>
12
13void
14visionx::convertIvtRgbToCvGray(const CByteImage& ivt_rgb, cv::Mat& cv_gray)
15{
16 cv::Mat cv_rgb(cv::Size(ivt_rgb.width, ivt_rgb.height), CV_8UC3);
17 std::memcpy(cv_rgb.data,
18 ivt_rgb.pixels,
19 static_cast<unsigned int>(ivt_rgb.width * ivt_rgb.height * ivt_rgb.bytesPerPixel));
20
21 cv_gray.create(cv::Size(ivt_rgb.width, ivt_rgb.height), CV_8UC1);
22 cv::cvtColor(cv_rgb, cv_gray, cv::COLOR_RGB2GRAY);
23}
24
25cv::Mat
26visionx::makeCameraMatrix(const visionx::CameraParameters& cameraParam)
27{
28 ARMARX_CHECK_EQUAL(cameraParam.focalLength.size(), 2);
29 ARMARX_CHECK_EQUAL(cameraParam.principalPoint.size(), 2);
30 const float nodalPointX = cameraParam.principalPoint.at(0);
31 const float nodalPointY = cameraParam.principalPoint.at(1);
32 const float focalLengthX = cameraParam.focalLength.at(0);
33 const float focalLengthY = cameraParam.focalLength.at(1);
34
35 cv::Mat camera_matrix = cv::Mat(3, 4, CV_64F, 0.0);
36 camera_matrix.at<double>(0, 2) = double(nodalPointX);
37 camera_matrix.at<double>(1, 2) = double(nodalPointY);
38 camera_matrix.at<double>(0, 0) = double(focalLengthX);
39 camera_matrix.at<double>(1, 1) = double(focalLengthY);
40 camera_matrix.at<double>(2, 2) = 1.0;
41
42 return camera_matrix;
43}
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
cv::Mat makeCameraMatrix(const visionx::CameraParameters &cameraParams)
void convertIvtRgbToCvGray(const CByteImage &ivt_rgb, cv::Mat &cv_gray)