标签: image-rotation

如何使用imagemagick将透明png旋转45度并保持新图像透明?

我有一个16x16透明的png而且我做了

convert -rotate -45 a.png b.png
Run Code Online (Sandbox Code Playgroud)

这将它旋转并创建一个大小为22x22的新图像b.png,当我在背景中使用时,显示原始图像(16x16)与底层背景一起旋转但是出现的新填充显示为白色背景.

如何使新填充物透明化?

如果那是不可能的,那么我怎么能让新图像的所有背景都是一种颜色?

png transparency imagemagick image-rotation

6
推荐指数
2
解决办法
6409
查看次数

如何在频域中旋转图像?

我听说应该可以对jpeg图像进行无损旋转.这意味着您在没有IDCT的情况下在频域中进行旋转.我试过谷歌但没找到任何东西.有人能为此带来一些启示吗?

我无意义的意思是我不会在轮换中丢失任何其他信息.当然,这可能只有在旋转90度的倍数时才有可能.

jpeg image-manipulation image-processing image-rotation

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

旋转图像中的脸部

我有一个问题,当我用我的平板电脑拍照时,我使用opencv来检测脸部并识别脸部.因此,我将尝试旋转面部,以便例如将眼睛和眼睛置于相同的位置,例如具有相同的水平角度.
你能给我一些OpenCv函数或一些有用的链接吗?
提前致谢.
马尔科

opencv image-processing rotation image-rotation

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

从旋转矩阵和OpenCV中的平移向量获取旋转轴

我有两个带有一定旋转角度的棋盘.让我们参考第一张图像找到第二张图像的旋转角度.

为此,我找到了这些对象的旋转矩阵(3x3)和平移矩阵(3x1).

如何使用这些矩阵找到对象的旋转角度旋转轴

opengl opencv rotation image-rotation

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

DIV中有多个背景图像时,如何只旋转一张图像?

我有以下小提琴

div包含3个背景图像。如您所见,所有图像都在旋转,但是我只希望风扇图像在旋转。所有其他人应保持不变。如何在不添加额外div的情况下执行此操作?

亲切的问候

transform css3 image-rotation animate.css

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

android什么应该是枢轴指向旋转图像围绕其基地的中心

在标记重复或关闭之前,请仔细阅读整个问题

我想围绕其基点的中心点旋转图像(特别是箭头图像).

例如,在开始时,我的图像将像9中的时钟中的秒针.并且假设如果我将该图像旋转30度,它应该看起来像时钟秒针10和120度时钟秒针1.

所以我想围绕它的基座中心(沿x轴)旋转那个图像.

那么如果我第一次编码,我应该作为枢轴(X和Y)传递什么

imageView.setPivotX(1f);
            imageView.setPivotY(1f);
            imageView.setRotation(-30);
Run Code Online (Sandbox Code Playgroud)

或第二个代码

Matrix matrix = new Matrix();
    imageView.setScaleType(ScaleType.MATRIX);
    matrix.postRotate((float) 20, 0f, 0f);
    imageView.setImageMatrix(matrix);
Run Code Online (Sandbox Code Playgroud)

或第三代码

Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.arrow_0_degree);
    Matrix matrix = new Matrix();
    matrix.postRotate(30);
    Bitmap rotated = Bitmap.createBitmap(myImg, 0, 1, myImg.getWidth(), myImg.getHeight(), matrix, true);
    imageView.setImageBitmap(rotated);
Run Code Online (Sandbox Code Playgroud)

或第四个代码

final RotateAnimation rotateAnim = new RotateAnimation(0.0f, degree,
        RotateAnimation.RELATIVE_TO_SELF, 0.5f,
        RotateAnimation.RELATIVE_TO_SELF, 0.5f);

rotateAnim.setDuration(0);
rotateAnim.setFillAfter(true);
imgview.startAnimation(rotateAnim);
Run Code Online (Sandbox Code Playgroud)

添加了一个图像,以便更好地理解沿顺时针方向旋转90度.

我希望将来google会添加更多关于支点的文档.

提前致谢.在此输入图像描述

android image rotation image-rotation rotateanimation

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

我imrotate()一个图像,画两条线,旋转线并在原始图像中绘制它们,但是没有在MATLAB中得到预期的结果?

我想做的事 :

假设我有一个图像I,我旋转-45°使用imrotate(我得到I_R).然后我绘制两条线ABCD(平行线).最后,我将两条线向后旋转(45°)并在原始图像中绘制它们I.

我是怎么做的##

I使用MATLAB函数旋转imrotate():

I_R = imrotate(I,-45);
Run Code Online (Sandbox Code Playgroud)

从Matlab帮助中,我得到:B = imrotate(A,angle)围绕其中心点以逆时针方向旋转图像A角度.

但似乎imrotate为图像添加了翻译!我已经阅读了内置matlab函数的代码,似乎它使用一个函数调用getOutputBound来检查旋转的图像是否适合图中.这个翻译就是我要找的!!

这四个点A,B,C,D形成的两条平行线ABCD.

A = [x_A; u];
B = [x_B; u];

C = [x_A; d];
D = [x_B; d];
Run Code Online (Sandbox Code Playgroud)

所以现在,我旋转两行,我使用我的函数rotateTwoPoints(),只需调用以下两行:

[Af,Bf] = rotateTwoPoints(A,B,-45,O,true);
[Cf,Df] = rotateTwoPoints(C,D,-45,O,true);
Run Code Online (Sandbox Code Playgroud)

旋转O所在的原点在哪里.

  • 我试过,O = [0;0]我的意思是它是情节的起源.没有成功!
  • 所以我选择使用图像 …

matlab translation rotation image-rotation

5
推荐指数
2
解决办法
1242
查看次数

使用opencv warpaffine时如何保持白色背景

我正在尝试使用旋转图像

void rotate(cv::Mat& src, double angle, cv::Mat& dst)
{
    int len = std::max(src.cols, src.rows);
    cv::Point2f pt(len / 2., len / 2.);
    cv::Mat r = cv::getRotationMatrix2D(pt, angle, 1.0);
    cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows));
}
Run Code Online (Sandbox Code Playgroud)

通过给出角度,源和目标图像.旋转工作正常如下.

在此输入图像描述

我想让黑色区域变白.我试过了

cv::Mat dst = cv::Mat::ones(src.cols, src.rows, src.type());
Run Code Online (Sandbox Code Playgroud)

在调用rotate之前,但结果没有变化.我怎样才能做到这一点?

注意:我正在寻找在进行旋转时实现此目的的解决方案.显然,通过在旋转后使黑色区域变白可以实现.

c++ opencv image-processing rotation image-rotation

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

如何在FireMonkey中将图像绘制为旋转的矩形?

在FireMonkey中,将位图绘制到源矩形很简单:

Canvas.DrawBitmap(FBitmap, ImageSrcRect, ImageDstRect, 1);
Run Code Online (Sandbox Code Playgroud)

而我正在TPaintBox画布上做这件事.我想改为绘制旋转的位图(并缩放,因为目标大小可能与源大小不同.)

特别:

  • 我有两点
  • 图像应放在这两点之间的中心点下方
  • 图像应旋转以跟随两点之间的角度

如下图所示:

期望的轮换

左边一个是我目前可以做的; 在右边是我想做的.

最好的方法是什么?

我试过的

为了保持现有代码简单(例如,绘制到目标矩形,从而缩放结果),我一直在尝试在调用现有的DrawBitmap代码之前向画布的矩阵添加旋转矩阵.例如,

OldMatrix := Canvas.Matrix; // Original, to restore

W := PointB.X - PointA.X;
H := PointA.Y - PointB.Y;
RotationMatrix := TMatrix.CreateRotation(-ArcTan2(H, W));
Canvas.SetMatrix(OldMatrix * RotationMatrix);

Canvas.DrawBitmap(FImage, ImageSrcRect, ImageDstRect, 1);

Canvas.SetMatrix(OldMatrix);
Run Code Online (Sandbox Code Playgroud)

并且有几个变化与现有矩阵相乘,创建了一个全新的矩阵,包括平移和旋转等等.所有这些部分都有效:旋转角度是正确的,但我在使位置保持一致方面遇到了很多麻烦 - 例如,围绕中心点旋转(这甚至不是围绕点旋转位图的顶部,而不是围绕中心旋转.)我发现旋转的图像在底部偏移很好右边象限,但在其他三个中偏移/平移不正确,例如偏得太远,或者剪裁到两点的最左边或最顶端的X或Y位置.我不知道为什么会这样,而且就此而言,我正在寻求帮助.

细节

  • 德尔福10西雅图
  • FireMonkey(在Windows上)
  • 目标是一个TPaintBox任意放置的画布.油漆盒本身可以在上面TScaledLayout.
  • 目标是将绘图位图绘制到绘制框上的旋转目标矩形.

delphi rotation matrix image-rotation firemonkey

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

如何检测将显微镜图像旋转对准模板的良好特征

我正在进行一个项目,以自动旋转流体实验的显微镜图像堆栈,以便它们与微流控芯片的CAD模板图像对齐。我正在使用Python中的OpenCV软件包进行图像处理。必须具有正确的旋转方向,以便可以正确遮盖图像以进行分析。我们的芯片具有在每个帧中都可见的充满荧光染料的标记。模板和示例图像如下所示(模板可以缩放到任意大小,但是图像的相关区域通常约为100x100像素左右):

样本模板标记 包含对齐标记的样本图像

我无法将图像旋转对齐到CAD模板。通常,CAD模板与图像之间的未对准小于几度,这仍然足以干扰分析,因此即使它相对较小,我也需要能够测量旋转差异。

在线以下示例我正在使用以下过程:

  1. 使用三次插值(〜800 x 800)将图像放大到与模板大约相同的大小
  2. 使用Otsu方法将两个图像阈值化
  3. 使用内置方法查找关键点并提取描述符(我尝试过ORB,AKAZE和Brief)。
  4. 使用具有汉明距离的蛮力匹配器来匹配描述符。
  5. 取得最佳匹配,并使用它们来计算部分仿射变换矩阵
  6. 使用该矩阵推断旋转位移,将一个图像变形为另一个图像作为检查。

这是我的代码示例(部分从此处借来):

import numpy as np
import cv2
import matplotlib.pyplot as plt

MAX_FEATURES = 500
GOOD_MATCH_PERCENT = 0.5

def alignImages(im1, im2,returnpoints=False):
    # Detect ORB features and compute descriptors.
    size1 = int(0.1*(np.mean(np.shape(im1))))
    size2 = int(0.1*(np.mean(np.shape(im2))))
    orb1 = cv2.ORB_create(MAX_FEATURES,edgeThreshold=size1,patchSize=size1)
    orb2 = cv2.ORB_create(MAX_FEATURES,edgeThreshold=size2,patchSize=size2)
    keypoints1, descriptors1 = orb1.detectAndCompute(im1, None)
    keypoints2, descriptors2 = orb2.detectAndCompute(im2, None)

    matcher = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck=True)
    matches = matcher.match(descriptors1,descriptors2)
    # Sort matches by score
    matches.sort(key=lambda x: x.distance, reverse=False)

    # Remove not …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing image-rotation feature-detection

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