plotCamera
在三维坐标中画出摄像机
描述
例子
使用绝对姿势绘制动画相机
创建一个rigidtform3d
对象。
initialRotation = [1 0 0;0 0 1;0 -1 0];initialTranslation = [10 0 20];pose = rigidtform3d(initialRotation,initialTranslation);
绘制一个不透明度为零的相机,并基于创建的绝对姿势rigidtform3d
对象。
cam = plotCamera(AbsolutePose=pose,不透明度=0)
cam =相机属性:父:[1x1坐标轴]大小:1 AbsolutePose: [1x1 rigidtform3d]可见:1 AxesVisible: 0 ButtonDownFcn: "颜色:[1 0 0]不透明度:0标签:"
设置当前轴的查看属性。
网格在轴平等的轴手册
扩展每个轴的可视范围。这些变化使整个动画在下一步中可见。
xlim (20 [-15]);ylim (20 [-15]);zlim (25 [15]);
旋转相机周围y设在。
为theta = 0:10:1800 updateAngles = [0 -theta 0];updateTranslation = [10*cosd(theta) 10*sind(theta) 20];updateTform = rigidtform3d(updateAngles, updateTranslation);凸轮。AbsolutePose = rigidtform3d(initialRotation * updateTform。R, updateTform.Translation);drawnow ();结束
视觉化相机外观
创建一组校准图像。
imds = imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”,“校准”,“单反”));
检测图像中的棋盘角。
[imagePoints,boardSize] = detectCheckerboardPoints(imds.Files);
在以模式为中心的坐标系统中生成棋盘角的世界坐标,其中左上角位于(0,0)。将正方形大小设置为29毫米。
squareSize = 29;worldPoints = generateCheckerboardPoints(boardSize,squareSize);
在新位置加载图像。
imOrig = imread(fullfile(toolboxdir(“愿景”),“visiondata”,“校准”,“单反”,“image9.jpg”));图;imshow (imOrig InitialMagnification = 50);标题(“输入图像”);
校准相机。
cameraParams = estimatecamerparameters (imagePoints,worldPoints,“图象尺寸”、大小(imOrig 1:2));
还原图像。
im = undistortion timage (imOrig, cameraparams . intrinsic);
在新图像中找到引用对象。
[imagePoints,boardSize] = detectCheckerboardPoints(im);
计算新的外部性。
camExtrinsics = estimateExtrinsics(imagePoints,worldPoints, cameraparams . intrinsic);
绘制世界点。
图;plot3 (worldPoints (: 1) worldPoints(:, 2), 0(大小(worldPoints, 1), 1),“*”);持有在
标记原点。
plot3 (0, 0, 0,“g *”);
计算相机的位置和方向。
absPose = extr2pose(camExtrinsics);
画出相机。
cam = plotCamera(AbsolutePose=absPose,Size=20);
使z-轴向下。
set(gca,CameraUpVector=[0 0 -1]);
设置视图参数。
Camorbit (gca,-110,60,data=[0 0 1]);轴平等的网格在
标记坐标轴。
包含(“X”(毫米));ylabel (“Y(毫米)”);zlabel (“Z”(毫米));
输入参数
cameraTable
- - - - - -用于可视化的摄像机的属性
表格
用于可视化的摄像机属性,指定为表格。每一行代表一个相机。每个列标题必须匹配名称-值对参数的名称部分。的n属性的th行值设置n的第Th元素凸轮
.不能为指定值父
.如果表中包含ViewId
列,则视图id用于设置标签
摄像机的值。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:大小= 0.3
指定相机基底宽度为0.3
.
AbsolutePose
- - - - - -相机绝对姿势
rigidtform3d
对象
相机在世界坐标系中的绝对姿态,指定为rigidtform3d
对象。
大小
- - - - - -Camera-base宽度
1
(默认)|正实数
相机基底宽度,指定为正实数。
标签
- - - - - -相机的标签
”
(默认)|特征向量|字符串标量
摄像机标签,指定为字符向量或字符串标量。
颜色
- - - - - -相机的颜色
[10 0 0]
(红色)(默认)|RGB值
相机颜色,指定为RGB三元组。RGB三元组是一个三元素行向量,其元素指定颜色的红、绿和蓝分量的强度。强度必须在[0,1]范围内。
不透明度
- - - - - -相机不透明度
0.2
(默认)|范围[0,1]中的标量
相机不透明度,指定为范围[0,1]中的标量。
可见
- - - - - -相机的可见性
真正的
或1
(默认)|假
或0
相机可见性,指定为数字或逻辑1
(真正的
)或0
(假
).
AxesVisible
- - - - - -摄像机轴可见性
假
或0
(默认)|真正的
或1
摄像机轴可见性,指定为数字或逻辑1
(真正的
)或0
(假
).
ButtonDownFcn
- - - - - -回调函数
”
(默认)|函数处理
回调函数,指定为在单击相机时执行的函数句柄。
父
- - - - - -输出轴
轴
处理
输出轴,指定为轴句柄。默认情况下,plotCamera
使用当前轴句柄。方法返回当前轴gca
函数。
输出参数
凸轮
-摄像头可视化对象
相机
对象|的行向量相机
对象
相机可视化对象,作为这些选项之一返回。
相机
object -该函数在绘制单个摄像机时返回此选项。名称-值参数或cameraTable
输入元素设置相应的相机
对象属性。的行向量
相机
objects -该函数在绘制多个摄像机时返回此选项。的n的第Th行值cameraTable
属性的属性nth相机
向量中的对象。
对象创建相机对象vision.graphics.Camera
类,它包含以下属性:
版本历史
在R2015a中引入R2022b:指定AbsolutePose
作为一个rigidtform3d
对象
从R2022b开始,大多数计算机视觉工具箱™函数使用预乘法约定创建和执行几何转换。因此,现在可以指定AbsolutePose
的名称-值参数rigidtform3d
对象,该对象使用前置乘法约定。
尽管你仍然可以指定AbsolutePose
作为一个rigid3d
对象,不推荐使用此对象,因为它使用后乘约定。您可以通过切换到新的预乘法几何转换对象来简化您的几何转换工作流。有关更多信息,请参见将几何变换迁移到前置乘法约定.
R2020a:的位置
而且取向
属于plotCamera
函数被移除
的plotCamera
函数现在接受rigid3d
对象来指定相机姿势。从R2020a开始,必须使用rigid3d
对象,而不是位置
而且取向
属性指定姿态。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。