标签: image-rotation

帮助正确计算atan2

我需要计算线之间的角度.我需要计算atan.所以我正在使用这样的代码

static inline CGFloat angleBetweenLinesInRadians2(CGPoint line1Start, CGPoint line1End) 
{
    CGFloat dx = 0, dy = 0;

    dx = line1End.x - line1Start.x;
    dy = line1End.y - line1Start.y;
    NSLog(@"\ndx = %f\ndy = %f", dx, dy);

    CGFloat rads = fabs(atan2(dy, dx));

    return rads;
}
Run Code Online (Sandbox Code Playgroud)

但是我不能超过180度((在179度之后178-160 ...... 150等等).

我需要旋转360度.我该怎么做?怎么了?

maby这有助于:

//Tells the receiver when one or more fingers associated with an event move within a view or window.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSArray *Touches = [touches allObjects];
    UITouch *first = [Touches objectAtIndex:0]; …
Run Code Online (Sandbox Code Playgroud)

objective-c image-rotation atan2

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

在Java Swing上旋转JLabel或ImageIcon

首先,这是我使用swing的第一周,如果我的问题太明显,那就很抱歉.此外,我需要使用标准java库的解决方案,因为这是用于家庭作业,我不允许使用奇怪的库.

我正在使用JLabel和ImageIcon在JFrame上显示图像.现在我想将屏幕上的图像旋转到任意角度.我发现了一些关于Graphics2D的东西,但我找不到这样做的方法.

由于我发现的解决方案不起作用或我不理解它们,我对旋转ImageIcon或JLabel的任何解决方案感兴趣.由于我将图像定位在JLabel上的setBounds,旋转JLabel将是一个更好的解决方案我想(这样我也不会被迫保存ImageIcon对象).

感谢您的关注,抱歉我的英语不好.

编辑...要在屏幕上显示图像,请执行下一步:

JFrame frame = new JFrame("Something");
frame.setLayout(new FlowLayout()); //for example
JPanel panel = new JPanel();
panel.setLayout(null);

ImageIcon playerSprite = new ImageIcon("rute/to/file.png");
JLabel player = new JLabel(playerSprite);

panel.add(player);
player.setBounds(10,10,36,52); //for example

frame.getContentPane().add(panel);
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

恢复,我该如何旋转这个IconImage或JLabel.如果您认为更好,我可以使用其他方法来显示图像.如果解决方案是使用Graphics2D,就像我看到的那样,我将欣赏到达此类对象的解决方案,稍后将旋转后的图像返回到ImageIcon,因为当我尝试这个时......

ImageIcon imagePlayer = new ImageIcon("img/stand.png");
Image image = imagePlayer.getImage();
Graphics2D g = (Graphics2D)image.getGraphics();
Run Code Online (Sandbox Code Playgroud)

在执行时,答案就是这个......

Exception in thread "main" java.lang.UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)
Run Code Online (Sandbox Code Playgroud)

第2版​​......现在我正在使用这段代码.图像旋转但旧的未旋转图像仍保留在新图像下的屏幕上.将一个名为stand.png的png图像放在同一目录中,您将看到它.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel rotation image-rotation

7
推荐指数
1
解决办法
3万
查看次数

单击一个按钮在android中顺时针旋转图像

我有一个要求,我有一个ImageView和一个按钮.

http://i1289.photobucket.com/albums/b509/salikclub/Rotate-Last-Start_zps0d2fced8.png

我想在单击按钮时旋转图像.我需要全屏图像.但是当我点击按钮时图像会旋转,但不会在全屏显示.请参阅以下链接.

http://i1289.photobucket.com/albums/b509/salikclub/Rotate-Last1_zps2ccb1326.png

之后,当我点击按钮图像时也会旋转.但是位置已更改且未全屏显示.

我的要求是,当我点击按钮时,图像将顺时针旋转并将全屏显示.我再次单击按钮图像必须顺时针旋转并全屏显示.同样,当我单击按钮时,图像必须旋转.

因此有人可以帮助我吗?如果你能给我一个示例代码或一个非常适合的链接.

这是我正在尝试的代码,

main.xml中

<merge xmlns:android="http://schemas.android.com/apk/res/android" >

    <ImageView
        android:id="@+id/imgView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:src="@drawable/matterhorn"
        />

    <Button
        android:id="@+id/btnRotate"
        android:layout_width="65dp"
        android:layout_height="35dp"
        android:layout_gravity="bottom|left"
        android:layout_marginLeft="190dp"
        android:layout_marginBottom="15dp"
        android:layout_weight="1"
        android:background="@android:color/transparent"
        android:drawableLeft="@drawable/btn_icon_rotate"
        >
    </Button>

</merge>
Run Code Online (Sandbox Code Playgroud)

这是我的主要活动"MainActivity.java"

package com.imageview.rotate;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Matrix;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class MainActivity extends Activity implements OnClickListener{

    private Button btnRotate;
    private ImageView imgview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        imgview = (ImageView) findViewById(R.id.imgView); …
Run Code Online (Sandbox Code Playgroud)

android image-rotation imageview android-imageview

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

使用AffineTransform旋转图像

我上课了Airplane.在这个类里面我有变量img这是一个BufferedImage类型.更有甚至,我有WorldMap一个覆盖功能的类paintComponent(Graphics g):

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null); 
    drawAirplanes(g2d);
}
Run Code Online (Sandbox Code Playgroud)

功能drawAirplanes()如下:

private void drawAirplane(Graphics2D g){
    for(Samolot i: s){
        i.rotateAirplane();
        g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(),  null);
    }
}
Run Code Online (Sandbox Code Playgroud)

它只需要1)旋转飞机(飞机物体内的BufferedImage)2)画他.

我的Airplane.rotateAirplane()函数如下所示:

 public void rotateSamolot() {
   AffineTransform tx = new AffineTransform();

   tx.translate(10,10); //10, 10 is height and width of img divide by 2
   tx.rotate(Math.PI / 2);
   tx.translate(-10,-10); 

   AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);

   BufferedImage …
Run Code Online (Sandbox Code Playgroud)

java swing image-rotation affinetransform graphics2d

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

将矩阵旋转到位

我正在解决旋转NxN矩阵的问题.

似乎我的代码进行了旋转,但在图像上留下了X.
所以我猜它正在不正确地旋转边缘.我附加了两个图像作为样本输入和输出.

在此输入图像描述 在此输入图像描述

我的代码出了什么问题:

public static void rotateRight(float[][] img){
    for (int i=0; i<N/2; i++){
        for (int j=i; j<N-i; j++){
            int J_COMP = N-j-1; //complement of J
            int LEFT = i;
            int RIGHT = N-i-1;
            int TOP = i;
            int BOTTOM = N-i-1;

            float temp = img[J_COMP][LEFT];
            img[J_COMP][LEFT] = img[BOTTOM][J_COMP];
            img[BOTTOM][J_COMP] = img[j][RIGHT];
            img[j][RIGHT] = img[TOP][j];
            img[TOP][j] = temp;
        }
    }       
}
Run Code Online (Sandbox Code Playgroud)

java arrays image-rotation

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

使用GLSurfaceView Android旋转和捏缩放图像效果

我正在开发一个应用程序来应用效果/旋转/捏合来放大图像的输入功能.我从https://github.com/Grishu/ImageEffects下载了演示应用程序.

它运作良好,现在我的问题/问题如下:

  1. 对具有进度更改值的图像应用多个效果(例如,首先应用亮度效果,此结果应用另一个效果说"对比度".)

    - 问题:代码效果始终适用于原始图像.所以改变代码以对最终图像应用效果,比如

    if(isApplyEffectOnOriginalImage){//call first time only         
        mEffect.apply(mTextures[0], mImageWidth, mImageHeight, mTextures[1]);
    }else{
        mEffect.apply(mTextures[1], mImageWidth, mImageHeight, mTextures[1]);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在,如果第一次对进度更改应用亮度效果,它可以正常工作.但是如果我应用相同或其他(对比)效果,现在我认为进度更改效果适用于mTextures [1]和mTextures [1]中的结果集,因此可以创建临时mTextures [2]来存储mTextures [ 1]最初,当用户更改进度值时,对mTextures [2]应用效果,并在mTextures [1]上设置结果,就像在if条件下发生一样.

  2. 如何应用捏缩放图像

  3. 旋转问题:我正在以90度角顺时针旋转图像,只需设置值(90,180,270等),但问题是当图像从90旋转到180时,图像渲染不正确.看到

A)0角度图像

0角度图像

B)90°角度图像

90角度图像

C)180角度图像

180角度图像

android image-rotation glsurfaceview pinchzoom

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

在下面的类中实现具有屏幕限制的Imageview旋转

我正在开发一个Android应用程序,用于图像缩放,拖动,旋转到屏幕限制之外.首先,我必须以编程方式将图像适合整个屏幕,并对图像执行缩放,旋转,拖动操作到屏幕边界外部.我使用了以下代码,除了旋转功能外,一切都正常.我混淆了矩阵计算所以请帮助任何人如何使用此代码实现旋转功能.

JavaCode:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.widget.ImageView;

public class ZoomableImageView extends ImageView
{
    Matrix matrix = new Matrix();

    static final int NONE = 0;
    static final int DRAG = 1;
    static final int ZOOM = 2;
    static final int CLICK = 3;
    int mode = NONE;

    PointF last = new PointF();
    PointF start = new PointF();
    float minScale = 1f;
    float maxScale = 4f;
    float[] …
Run Code Online (Sandbox Code Playgroud)

android image-rotation imageview

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

图像因cv2.warpPerspective而失去质量

我正在使用OpenCV 3.1和Python.

当我试图用文本去校正(修正倾斜)图像时,我的问题出现了.我正在使用cv2.warpPerspective它,但图像失去了很多质量.你可以在这里看到图像的原始部分:

图像没有光滑

然后,在这里,"旋转"的图像:

图像与光滑

它就像平滑一样.

我正在使用形态转换,如:

kernel = np.ones((2, 2), np.uint8)
blur_image = cv2.erode(tresh, kernel, iterations=1)
Run Code Online (Sandbox Code Playgroud)

white_mask2 = cv2.morphologyEx(white_mask2, cv2.MORPH_OPEN, kernel)
Run Code Online (Sandbox Code Playgroud)

看它是否有所改善,但没有.

我在这里看到了这个例子,但那些人有同样的问题: 在此输入图像描述在此输入图像描述

所以,我不知道我能做些什么.也许有一种方法可以不失去图像的质量,或者,还有另一种方法可以旋转图像而不会丢失质量.我知道这个方法:

root_mat = cv2.getRotationMatrix2D(to_rotate_center, angle, 1.0)
result = cv2.warpAffine(to_rotate, root_mat, to_rotate.shape, flags=cv2.INTER_LINEAR)
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用,因为我必须在这里旋转每个矩形:

在此输入图像描述

而不是整个形象.这意味着,我发现这样做的最好方法是warpPerspective,它工作正常,但质量下降.我希望得到一个避免质量损失的建议.

python opencv image image-rotation opencv3.1

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

当我上传到服务器时相机图像会旋转

我要么拍照,要么从图库中选择一张照片,然后按应有的方式在 ImageView 中显示它(就旋转而言)。但是,每当我将其上传到服务器时,它总是以横向模式上传,即使它在我的画廊中处于纵向模式。我该如何解决这个问题?

private void takePhoto() {
    Intent takePhoto = new Intent();
    takePhoto.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
    File photoFile = null;
    try {
        photoFile = imagePath();
    } catch (IOException e) {
        Log.d(TAG, "Take Photo: " + e.getMessage());
    }
    takePhoto.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
    startActivityForResult(takePhoto, REQUEST_IMAGE);
}

private File imagePath() throws IOException {
    String timeStamp = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
    String imageFileName = "IMAGE_" + timeStamp + "_";
    File storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(imageFileName, ".jpg", storageDirectory);
    mImageLocation = image.getAbsolutePath();
    return image;
}

private void uploadMultipart() { …
Run Code Online (Sandbox Code Playgroud)

android multipartform-data image-rotation

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

如何在张量流中随机旋转不同角度的图像

我知道我可以使用tensorflow旋转图像tf.contrib.image.rotate。但是,假设我想以弧度为单位,以-0.3到0.3之间的角度随机应用旋转,如下所示:

images = tf.contrib.image.rotate(images, tf.random_uniform(shape=[batch_size], minval=-0.3, maxval=0.3, seed=mseed), interpolation='BILINEAR')
Run Code Online (Sandbox Code Playgroud)

到目前为止,这将正常工作。但是,当批次大小在最后一次迭代中发生变化并且出现错误时,就会出现问题。那么,如何解决此代码并使它在所有情况下都能正常工作?请注意,输入图像是使用tf.data.Datasetapi 馈送的。

任何帮助深表感谢!!

python image-rotation tensorflow data-augmentation

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