问题标签 [affinetransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
34930 浏览

java - 在java中旋转图像

我正在寻找旋转图像。我有一个JInternalFrame包含一个JLabel. 标签包含图像。图像旋转后,我需要调整内部框架的大小。我目前拥有的代码旋转图像,但图像边缘周围有黑色并且它偏离中心。对于如何解决这个问题,有任何的建议吗?

0 投票
2 回答
750 浏览

java - Java awt/swing AffineTransformation 在形状周围移动

一次绘制数百个圆形动画的程序不会流畅地绘制它们。建议使用仿射变换来复制形状。这段代码被重构为使用 graphics2D,可以工作,但不会导致任何性能提升,因为它仍在填充数百个椭圆。如何正确使用仿射变换来填充形状一次然后复制/移动它?

}

0 投票
1 回答
2153 浏览

java - JComponent JPanel 缩放、平移和坐标问题

我有一个JPanel用户可以缩放和平移的矢量图像。覆盖此图像的是 (transparent) JComponent,我允许用户注释底层图像。这在全尺寸下效果很好,但如果我放大,使用AffineTransform,重叠坐标也会受到影响。因此,如果用户在图像上绘制一个框,该框也会被缩放。

关于如何解耦这种行为的任何建议?这样JComponent就不受 的影响JPanelAffineTransform

0 投票
1 回答
64 浏览

gtk - gtk 中的仿射变换

我需要使用 gtk 框架进行一些仿射变换操作。

我找到了 cairo,但这并不能解决我的要求。我需要创建转换对象并进行一些操作,如下所示:

  1. [transform1 translateXBy:2.5 yBy:3.8];
  2. [transform1 rotateByDegrees:23.0];
  3. [transform1 appendTransform:transform2];

其中 transform1、transform2 是 AffineTransformation 的对象。

问候, iSight

0 投票
4 回答
21335 浏览

ios - 如何在 IOS 4 中直接旋转 CVImageBuffer 图像而不转换为 UIImage?

我在 iPhone 上使用 OpenCV 2.2 来检测人脸。我正在使用 IOS 4 的 AVCaptureSession 来访问摄像头流,如下面的代码所示。

我的挑战是视频帧以 CVBufferRef(指向 CVImageBuffer 的指针)对象的形式出现,它们以风景的形式出现,480px 宽 x 300px 高。如果您将手机横向握持,这很好,但是当手机处于直立位置时,我想将这些框架顺时针旋转 90 度,以便 OpenCV 可以正确找到面部。

可以将 CVBufferRef 转换为 CGImage,然后转换为 UIImage,然后旋转,就像这个人正在做的那样:Rotate CGImage take from video frame

但是,这会浪费大量 CPU。我正在寻找一种更快的方法来旋转传入的图像,如果可能的话,最好使用 GPU 进行此处理。

有任何想法吗?

伊恩

代码示例:

0 投票
2 回答
10042 浏览

java - 如何使用 AffineTransform 旋转并保持原始坐标系?

我是在 Java Swing 上旋转和翻译形状的命令模式翻译和旋转可以分开工作,但是当我做 60 度时。旋转然后平移,平移跟随新的旋转坐标。这意味着如果我拖动鼠标,形状与鼠标运动矢量之间的间隙为 60 度,有什么简单的解决方案吗?请帮忙,我在这里撞墙

我的旋转执行方法

我的翻译执行方法

任何帮助都将不胜感激

0 投票
1 回答
7449 浏览

c# - Emgu (OpenCV) 的转换 - 仿射/透视?

我目前正在尝试通过使用 EMGU 来实现转换,尽管我似乎无法理解它是如何工作的(而且似乎没有任何在线示例)。

我有我的图像,我希望从(和到)转换 4 个点,虽然我不知道还需要什么其他变量,但它要求 'mapMat' ?

这是我到目前为止所拥有的:

然而这不起作用。我也不确定仿射变换是否是最理想的解决方案?我也读过一些关于 FindHomography 和透视变换的东西,但不确定它们是否适用于这里。

我希望实现的目标转换是这样的:

http://img832.imageshack.us/img832/5157/targettransform.png

任何帮助将不胜感激,

谢谢

0 投票
1 回答
1780 浏览

java - Java - 亚像素线精度是否需要 AffineTransform?

我以前从未使用过 Java 绘图方法,因此我决定深入研究并创建一个模拟时钟作为 PoC。除了指针之外,我还绘制了一个包含分钟/小时刻度线的钟面。我使用简单的 sin/cos 计算来确定圆周围线条的位置。

但是,我注意到由于分钟刻度线很短,线条的角度看起来不对。我确定这是因为Graphics2D.drawLine()Line2D.double()方法都不能以亚像素精度绘制。

我知道我可以画出从中心开始的线条并用一个圆圈将其遮住(以创建更长、更准确的线条),但这似乎是一个不雅且昂贵的解决方案。我已经对如何做到这一点进行了一些研究,但我遇到的最佳答案是使用AffineTransform. 我假设我只能使用AffineTransformwith 旋转,而不是必须执行超级采样。

这是以亚像素精度绘制的唯一/最佳方法吗?还是有可能更快的解决方案?

编辑:我已经RenderingHintGraphics2D对象设置了 a 。

根据要求,这里有一些代码(没有完全优化,因为这只是一个 PoC):

这是绘图的屏幕截图。可能有点难以看清,但请查看 59 分钟的刻度线。它是完全垂直的。

示例图像

0 投票
3 回答
3194 浏览

java - AffineTransform 不转换 Stroke?

当使用scale()具有两个不同参数的 Graphics2D 函数(在 x 和 y 方向上按不同比例缩放)时,稍后在此 Graphics2D 对象上绘制的所有内容也会被缩放。这有一种奇怪的效果,即在一个方向上绘制的线比在另一个方向上的线更粗。下面的程序产生了这种效果,它显示了这个窗口:

示例截图

我正在使用此坐标变换来避免必须手动将我的应用程序模型坐标(本示例中的 (2,1, 2,4))转换为屏幕(或组件)像素坐标,但我不希望这种笔画失真. 换句话说,我希望所有线条都具有相同的宽度,与当前的 x 和 y 比例因子无关。

我知道是什么产生了这种效果(Stroke 对象创建了要在用户坐标中绘制的矩形的描边形状,然后将其转换为屏幕坐标),但我不确定如何解决这个问题。

  • 我是否应该创建一个新的 Stroke 实现,在 X 和 Y 方向上以不同的方式描边 Shapes(从而在此处撤消失真)?(或者是否有人已经知道这样的实现?)
  • 我应该将我的形状转换为屏幕坐标并在那里描边吗?
  • 还有其他(更好的)想法吗?
0 投票
1 回答
3106 浏览

raphael - Raphael.js 中的变换矩阵

我希望将 2D 仿射变换矩阵应用于我在 Raphael 中创建的椭圆。我知道底层 SVG 可以支持这一点,但 Raphael 是否提供了一种访问它的方法?

我尝试过自己解析变换矩阵,手动计算旋转、缩放和平移并在 Raphael 中应用,但它似乎不起作用,我认为必须有更好的方法?

非常感谢,威尔。