資源簡介
生成相機標定棋盤的c++程序,棋盤格大小為25mm,生成后直接就可以打印使用了。
代碼片段和文件信息
/*
獲取kinect原始圖片序列并依時間保存,以100張為單位,獲取的圖片可用于kinect標定
*/
#include?“kinect.h“
#include?
#include???
#include???
#include?
#include?
using?namespace?cv;
using?namespace?std;
//?安全釋放指針
template
inline?void?SafeRelease(Interface?*&?pInterfaceToRelease)
{
if?(pInterfaceToRelease?!=?NULL)
{
pInterfaceToRelease->Release();
pInterfaceToRelease?=?NULL;
}
}
//?保存所需數據的結構體
struct?eachframe
{
string?depth_name;
string?rgb_name;
cv::Mat?tmp_itD1;
cv::Mat?tmp_itRGB1;
};
int?main()
{
//?創建保存目錄
CreateDirectory(L“.//images“?NULL);
//?獲取Kinect設備
IKinectSensor*?m_pKinectSensor;
ICoordinateMapper*??????m_pCoordinateMapper;
CameraIntrinsics*?m_pCameraIntrinsics?=?new?CameraIntrinsics();
HRESULT?hr;
hr?=?GetDefaultKinectSensor(&m_pKinectSensor);
if?(FAILED(hr))
{
return?hr;
}
IMultiSourceframeReader*?m_pMultiframeReader;
IBodyframeSource*?m_pBodyframeSource;
IBodyframeReader*?m_pBodyframeReader;
if?(m_pKinectSensor)
{
hr?=?m_pKinectSensor->Open();
Sleep(1000);
if?(SUCCEEDED(hr))
{
m_pKinectSensor->get_BodyframeSource(&m_pBodyframeSource);
//?獲取多數據源到讀取器??
hr?=?m_pKinectSensor->OpenMultiSourceframeReader(
frameSourceTypes::frameSourceTypes_Color?|
frameSourceTypes::frameSourceTypes_Infrared?|
frameSourceTypes::frameSourceTypes_Depth
&m_pMultiframeReader);
}
}
if?(SUCCEEDED(hr))
{
hr?=?m_pKinectSensor->get_CoordinateMapper(&m_pCoordinateMapper);
}
if?(!m_pKinectSensor?||?FAILED(hr))
{
return?E_FAIL;
}
//?獲取深度相機內參并打印
if?(SUCCEEDED(hr))
{
hr?=?m_pCoordinateMapper->GetDepthCameraIntrinsics(m_pCameraIntrinsics);
}
if?(SUCCEEDED(hr))
{
cout?<“FocalLengthX?:?“?<FocalLengthX?< cout?<“FocalLengthY?:?“?<FocalLengthY?< cout?<“PrincipalPointX?:?“?<PrincipalPointX?< cout?<“PrincipalPointY?:?“?<PrincipalPointY?< cout?<“RadialDistortionFourthOrder?:?“?<RadialDistortionFourthOrder?< cout?<“RadialDistortionSecondOrder?:?“?<RadialDistortionSecondOrder?< cout?<“RadialDistortionSixthOrder?:?“?<RadialDistortionSixthOrder?< }
//?三個數據幀及引用
IDepthframeReference*?m_pDepthframeReference;
IColorframeReference*?m_pColorframeReference;
IInfraredframeReference*?m_pInfraredframeReference;
IInfraredframe*?m_pInfraredframe;
IDepthframe*?m_pDepthframe;
IColorframe*?m_pColorframe;
//?四個個圖片格式
Mat?i_rgb(1080?1920?CV_8UC4);??????//注意:這里必須為4通道的圖,Kinect的數據只能以Bgra格式傳出
Mat?i_depth(424?512?CV_8UC1);
Mat?i_depth_raw(424?512?CV_16UC1);
Mat?i_ir(424?512?CV_16UC1);
UINT16?*depthData?=?new?UINT16[424?*?512];
UINT16?*irData?=?new?UINT16[424?*?512];
IMultiSourceframe*
- 上一篇:rs編解碼.c rs糾錯碼
- 下一篇:C語言實現的文字加密與解密小程序()
評論
共有 條評論