matlab 카메라 기반 xml 파일 내 보 내기
기본 두 인자
하면,만약,만약...
2.전환 생 성 결과 준비
2 매개 변수의 전환 코드
writeExternalandIntrinsicMatrix(cameraParams62,'cameraParams622.xml');
function writeExternalandIntrinsicMatrix(cameraParams,file)
%writeXML(cameraParams,file)
docNode = com.mathworks.xml.XMLUtils.createDocument('opencv_storage');
docRootNode = docNode.getDocumentElement;
IntrinsicMatrix = ((cameraParams.IntrinsicMatrix)');
TangentialDistortion =cameraParams.TangentialDistortion;
%Distortion = [cameraParams.RadialDistortion(1:2),TangentialDistortion, cameraParams.RadialDistortion(3)];
Distortion = [cameraParams.RadialDistortion(1:2),TangentialDistortion,0];
FocalLength = cameraParams.FocalLength;
camera_matrix = docNode.createElement('IntrinsicCam'); % mat
camera_matrix.setAttribute('type_id','opencv-matrix'); % mat
rows = docNode.createElement('rows'); %
rows.appendChild(docNode.createTextNode(sprintf('%d',3))); % ,
camera_matrix.appendChild(rows); % mat
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',3)));
camera_matrix.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
camera_matrix.appendChild(dt);
data = docNode.createElement('data');
for i=1:3
for j=1:3
data.appendChild(docNode.createTextNode(sprintf('%.16f ',IntrinsicMatrix(i,j))));
end
data.appendChild(docNode.createTextNode(sprintf('
')));
end
camera_matrix.appendChild(data);
docRootNode.appendChild(camera_matrix);
distortion = docNode.createElement('DistortionCam');
distortion.setAttribute('type_id','opencv-matrix');
rows = docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
distortion.appendChild(rows);
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',5)));
distortion.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
distortion.appendChild(dt);
data = docNode.createElement('data');
for i=1:5
data.appendChild(docNode.createTextNode(sprintf('%.16f ',Distortion(i))));
end
distortion.appendChild(data);
docRootNode.appendChild(distortion);
focalLength = docNode.createElement('FocalLength');
focalLength.setAttribute('type_id','opencv-matrix');
rows = docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
focalLength.appendChild(rows);
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',1)));
focalLength.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
focalLength.appendChild(dt);
data = docNode.createElement('data');
for i=1:1
data.appendChild(docNode.createTextNode(sprintf('%.16f ',FocalLength(i))));
end
focalLength.appendChild(data);
docRootNode.appendChild(focalLength);
% distortion = docNode.createElement('Pmatrix');
% distortion.setAttribute('type_id','opencv-matrix');
% rows = docNode.createElement('rows');
% rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
% distortion.appendChild(rows);
%
% cols = docNode.createElement('cols');
% cols.appendChild(docNode.createTextNode(sprintf('%d',4)));
% distortion.appendChild(cols);
%
% dt = docNode.createElement('dt');
% dt.appendChild(docNode.createTextNode('d'));
% distortion.appendChild(dt);
% data = docNode.createElement('data');
% for i=1:4
% data.appendChild(docNode.createTextNode(sprintf('%.16f ',Distortion(i))));
% end
% distortion.appendChild(data);
% docRootNode.appendChild(distortion);
xmlFileName = file;
xmlwrite(xmlFileName,docNode);
end
2 인자 저장 결과
<?xml version="1.0" encoding="utf-8"?>
<opencv_storage>
<IntrinsicCam type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>1558.5669994681102253 0.0000000000000000 821.5211092415044050
0.0000000000000000 1557.8077127262038175 460.9748043702705331
0.0000000000000000 0.0000000000000000 1.0000000000000000
</data>
</IntrinsicCam>
<DistortionCam type_id="opencv-matrix">
<rows>1</rows>
<cols>5</cols>
<dt>d</dt>
<data>-0.1873006682834817 0.0171597428423078 0.0000000000000000 0.0000000000000000 0.0000000000000000 </data>
</DistortionCam>
<FocalLength type_id="opencv-matrix">
<rows>1</rows>
<cols>1</cols>
<dt>d</dt>
<data>1558.5669994681102253 </data>
</FocalLength>
</opencv_storage>
3 매개 변수 전환 코드
function writeXML(cameraParams,file)
%writeXML(cameraParams,file)
% : xml
% :
%cameraParams:
%file:xml
% xml 。
% fatherNode,
% childNode=docNode.createElement(childNodeName),
% fatherNode.appendChild(childNode)
docNode = com.mathworks.xml.XMLUtils.createDocument('opencv_storage'); % xml
docRootNode = docNode.getDocumentElement; %
IntrinsicMatrix = (cameraParams.IntrinsicMatrix)'; %
RadialDistortion = cameraParams.RadialDistortion; % 1*3
TangentialDistortion =cameraParams.TangentialDistortion; % 1*2
Distortion = [RadialDistortion(1:2),TangentialDistortion,RadialDistortion(3)]; % opencv [k1,k2,p1,p2,k3]
camera_matrix = docNode.createElement('camera-matrix'); % mat
camera_matrix.setAttribute('type_id','opencv-matrix'); % mat
rows = docNode.createElement('rows'); %
rows.appendChild(docNode.createTextNode(sprintf('%d',3))); % ,
camera_matrix.appendChild(rows); % mat
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',3)));
camera_matrix.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
camera_matrix.appendChild(dt);
data = docNode.createElement('data');
for i=1:3
for j=1:3
data.appendChild(docNode.createTextNode(sprintf('%.16f ',IntrinsicMatrix(i,j))));
end
data.appendChild(docNode.createTextNode(sprintf('
')));
end
camera_matrix.appendChild(data);
docRootNode.appendChild(camera_matrix);
distortion = docNode.createElement('distortion');
distortion.setAttribute('type_id','opencv-matrix');
rows = docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(sprintf('%d',5)));
distortion.appendChild(rows);
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',1)));
distortion.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
distortion.appendChild(dt);
data = docNode.createElement('data');
for i=1:5
data.appendChild(docNode.createTextNode(sprintf('%.16f ',Distortion(i))));
end
distortion.appendChild(data);
docRootNode.appendChild(distortion);
xmlFileName = file;
xmlwrite(xmlFileName,docNode);
end
3 매개 변수 전환 저장 결과
<?xml version="1.0" encoding="utf-8"?>
<opencv_storage>
<camera-matrix type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>1558.6100144620272658 0.0000000000000000 821.6453269280840459
0.0000000000000000 1557.8120286433929778 460.8682816753835141
0.0000000000000000 0.0000000000000000 1.0000000000000000
</data>
</camera-matrix>
<distortion type_id="opencv-matrix">
<rows>5</rows>
<cols>1</cols>
<dt>d</dt>
<data>-0.1840928673709393 -0.0328189923757994 0.0000000000000000 0.0000000000000000 0.2205440258401062 </data>
</distortion>
</opencv_storage>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【MATLAB】변수를 스크립트에 저장MATLAB에서 계산 결과를 저장할 때 MAT 파일, Excel 등의 파일에 저장하는 것이 좋을 것이라고 생각하지만 변수의 유형에 따라 스크립트에 내보낼 수 있습니다. MATLAB을 사용해 10년 정도가 됩니다만, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.