标签: affinetransform

Python 中 OpenCV checkVector 的断言错误

OpenCV 使用 Numpy 数组作为 Python 中的输入。这抽象了底层 C++ 数组的许多特征。

接下来,OpenCV 中的所有函数(例如 cv2.getAffineTransform)对 C++ 中的输入数据执行检查,如下所示:

inputMat.checkVector(3, CV_32F) == 3
Run Code Online (Sandbox Code Playgroud)

由此产生的断言错误通常很神秘,有时在 Python 中无法正确捕获:

(-215:Assertion failed) src.checkVector(2, 5) == 3 && dst.checkVector(2, 5) == 3 in function 'cv::getAffineTransform'
Run Code Online (Sandbox Code Playgroud)

到底是什么导致了这些错误以及如何解释它们?

python opencv numpy affinetransform

2
推荐指数
1
解决办法
5075
查看次数

如何求两组3D点之间的仿射变换矩阵?

我需要注册为视频的每一帧提供的一些 3D 面部标志。对于此任务,我试图找出为连续帧给出的几个地标坐标之间的变换矩阵。例如,第 1 帧和第 2 帧中 3 个地标的 3D 坐标如下:

frame1 = [2 4 15; 4 15 14; 20 11 7]
frame2 = [16 5 12; 5 7 9; 11 6 19]
Run Code Online (Sandbox Code Playgroud)

我尝试过使用imregtformmatlab提供的函数和matlab的ABSOR工具。

tform = imregtform(frame1, frame2, 'affine','OnePlusOneEvolutionary','MeanSquares');

tform = absor(frame1, frame2)
Run Code Online (Sandbox Code Playgroud)

使用时出现如下错误imregtform

Error using imregtform>parseInputs (line 261)
The value of 'MovingImage' is invalid. All dimensions of the moving image should be greater than 4.

Error in imregtform (line 124)
parsedInputs = parseInputs(varargin{:});
Run Code Online (Sandbox Code Playgroud)

注意:ABSOR 不查找仿射变换,它查找相似变换。

matlab affinetransform

2
推荐指数
1
解决办法
7371
查看次数

OpenCV从一个三角形变形到另一个三角形

我想将OpenCV Mat中的一个三角形映射到另一个三角形,非常像warpAffine(在这里检查),但是对于三角形而不是四边形,以便在delaunay三角剖分中使用它.

我知道一个人可以使用面具,但我想知道是否有更好的解决方案.

最好的问候,丹尼尔

opencv triangulation affinetransform warp

1
推荐指数
1
解决办法
2188
查看次数

Matlab计算三维相似变换.fitgeotrans for 3D

如何计算3D中4点之间的MatLab相似度变换?我可以从中计算变换矩阵

T*X = Xp,

但由于点坐标误差很小,它会给我仿射矩阵.我怎样才能将该矩阵与相似矩阵相匹配?我需要类似的东西fitgeotrans,但需要3D

谢谢

matlab transformation similarity affinetransform rotational-matrices

1
推荐指数
1
解决办法
3775
查看次数

如何将android触摸坐标转换为OpenCV图像坐标?

我正在尝试做一些类似的事情,但在 Android 上:http : //docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html 我有一个图像绘制到 ImageView,我希望能够选择 6 个点(3 个源和 3 个目标)并像之前的示例一样在 OpenCV 上使用 warpAffine 方法。我能够重现上面的示例,但是当从 onTouch 事件传递 X、Y 坐标时,它没有给我期望的结果。我认为问题是如何将 android 触摸坐标转换为 OpenCV Mat 列/行。也许我需要在 OpenCV 表面上显示图像?我希望我很清楚,提前致谢。

android opencv image-processing affinetransform

1
推荐指数
1
解决办法
1637
查看次数

使用 AffineTransform 缩放图形

我正在用 Swing 制作一个 GUI,它使用 AffineTransform 来缩放在 JInternalFrame 上绘制的 Graphics2D 对象。问题是它在当前状态下有问题,我不知道为什么。

为什么我的代码不能正确缩放?为什么图形在调整大小时“跳”到面板顶部?

这是我的自包含示例:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.util.*;

public class MainPanel extends JFrame implements ActionListener{

    private static final double version = 1.0;
    private JDesktopPane desktop;
    public static RFInternalFrame frame;

    private java.util.List<Point> POINT_LIST = Arrays.asList(
            //Top Row
            new Point(50, 30),
            new Point(70, 30),
            new Point(90, 30),
            new Point(110, 30),
            new Point(130, 30),
            new Point(150, 30),
            new Point(170, 30),
            new Point(190, 30),
            new Point(210, 30),
            new …
Run Code Online (Sandbox Code Playgroud)

java swing affinetransform

1
推荐指数
1
解决办法
2879
查看次数

旋转 BufferedImage 改变它的颜色

我正在尝试编写一个类来在 x 和 y 方向上缝合雕刻图像。x 方向正在工作,为了减少 y 方向,我想简单地将图像旋转 90° 并在已经重新缩放的图像上运行相同的代码(仅在 x 方向上),然后将其旋转回其初始状态。

我找到了一些东西AffineTransform并尝试了它。它实际上产生了一个旋转的图像,但弄乱了颜色,我不知道为什么。

这是所有的代码:

import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.io.File;
import java.io.IOException;
import javafx.scene.paint.Color;
import javax.imageio.ImageIO;


public class example {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    // TODO code application logic here

    BufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));
    BufferedImage imgIn2 = imgIn;

    AffineTransform tx = new AffineTransform();
    tx.rotate(Math.PI/2, imgIn2.getWidth() / 2, imgIn2.getHeight() / 2);//(radian,arbit_X,arbit_Y)

    AffineTransformOp op …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage seam-carving image-rotation affinetransform

1
推荐指数
1
解决办法
1360
查看次数

如何在 Java 中旋转图像图标

我正在用 Java 创建一个多米诺骨牌游戏。我有以下代码加载,调整大小,然后在屏幕上显示多米诺骨牌图像:

ImageIcon imageIcon = new ImageIcon("images\\4-4.png");
Image image = imageIcon.getImage(); 
Image newimg = image.getScaledInstance(60, 120,  java.awt.Image.SCALE_SMOOTH);  
imageIcon = new ImageIcon(newimg);

JLabel img = new JLabel(imageIcon);
img.setBounds(100, 100, 60, 120);
getContentPane().add(img);
Run Code Online (Sandbox Code Playgroud)

我想要做的是将图像旋转 90 或 -90 度。我在互联网上搜索过,但我发现的例子似乎很复杂。

知道如何旋转我的图像吗?

顺便说一句,如果您认为这不是在多米诺骨牌游戏中显示多米诺骨牌的正确方式,请告诉我。我是java新手。

java swing image java-2d affinetransform

1
推荐指数
1
解决办法
2162
查看次数

如何使用 opencv 实现居中剪切图像

当我使用 warpAffine 剪切图像时:

M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])
aff2 = cv2.warpAffine(im, M2, (W, H))
Run Code Online (Sandbox Code Playgroud)

我获得了一个没有围绕图像中心剪切的图像。我可以在图像的一侧看到黑色三角形区域,而另一侧没有黑色区域。

我怎么能让图像被对称剪切?

python opencv image-processing affinetransform

1
推荐指数
1
解决办法
1989
查看次数

如何求解超定线性系统 X * A = B?

如何解决超定线性系统X * A = BA, B是给定的,我需要找到X

似乎方阵的解决方案很简单(/sf/answers/1319365211/):

X * A = B
M * A * Inv(A) = B * Inv(A)
M = B * Inv(A)
Run Code Online (Sandbox Code Playgroud)

但是如何处理非方阵呢?

示例代码:

def to_homogeneous(_pts):
    n = _pts.shape[0]
    _pts = _pts.transpose()
    pts = np.ones((3,n), np.float32)
    pts[:2,:] = _pts
    return pts

def get_random_affine_matrix():
    src_tri = np.random.rand(3,2) * np.random.randint(1,10)
    src_tri = src_tri.astype(np.float32)
    src_tri = to_homogeneous(src_tri)
    
    dst_tri = np.random.rand(3,2) * np.random.randint(1,10)
    dst_tri = dst_tri.astype(np.float32)
    dst_tri = to_homogeneous(dst_tri)
    
    m = dst_tri …
Run Code Online (Sandbox Code Playgroud)

python math numpy linear-algebra affinetransform

1
推荐指数
1
解决办法
83
查看次数