代码未在图像上显示主轴和次轴

Posted

技术标签:

【中文标题】代码未在图像上显示主轴和次轴【英文标题】:Code not displaying major and minor axes over image 【发布时间】:2021-12-18 10:27:14 【问题描述】:

我正在使用以下代码:

   majors = cell_props.MajorAxisLength;
   minors = cell_props.MinorAxisLength;
   ctr = cell_props.Centroid;
   theta = cell_props.Orientation;

   imshow(cell_full)
   hold on

   for k = 1:length(measurements)

       xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(theta(k));
       yMajor=ctr(k,2) + [-1 1]*(majors(k)/2)*sind(theta(k));

       plot(xMajor,yMajor,'r','LineWidth',2);

       xMinor=ctr(k,1) + [-1 1]*(minors(k)/2)*sind(theta(k));
       yMinor=ctr(k,2) - [-1 1]*(minors(k)/2)*cosd(theta(k));
   
       plot(xMinor,yMinor,'b','LineWidth',2);
   end
   hold off

我的图片是:

当我尝试运行前面提到的代码时,由于某种原因,它会创建这些行:

我意识到我在这里的数学可能做错了,但我不确定是什么。我尝试将 theta 转换为弧度,切换线条的次坐标和主坐标。似乎没有任何效果。

任何帮助将不胜感激。

【问题讨论】:

旋转方向错误。您可以看到轴应该围绕垂直/水平轴镜像...所以根据您的 0 度在哪里以及哪种方式是正的,您可以进行数学计算。 【参考方案1】:

正如 Christoph 在评论中指出的那样,轴应该垂直反射。这意味着方位角的正方向是错误的。 theta(k) 前面的负号应该可以解决它。

xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(-theta(k));

【讨论】:

谢谢你,我太笨了。这就是通常发生的事情,哈哈。

以上是关于代码未在图像上显示主轴和次轴的主要内容,如果未能解决你的问题,请参考以下文章

cell.imageview.image 未在表格上显示图像

在创建 pdf 时,图像未在 Flutter 中显示

FlexBox布局(RN官网所得)

matplotlib中具有不同比例的多轴[重复]

颤振推送通知图像未在所有设备上显示

Gmail 未在邮件 Laravel 上显示图像