Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用OpenCV旋转IplImage创建扭曲图像_Android_Ffmpeg_Javacv_Iplimage - Fatal编程技术网

Android 使用OpenCV旋转IplImage创建扭曲图像

Android 使用OpenCV旋转IplImage创建扭曲图像,android,ffmpeg,javacv,iplimage,Android,Ffmpeg,Javacv,Iplimage,我在尝试从android设备到RTMP的实时流时遇到了困难。首先,它是流好,但是,它是倾斜的,所以有一个代码来旋转图像 public IplImage rotateImage(IplImage img) { IplImage img_rotate = IplImage.create(img.height(), img.width(), img.depth(), img.nChannels()); //acctually, I d

我在尝试从android设备到RTMP的实时流时遇到了困难。首先,它是流好,但是,它是倾斜的,所以有一个代码来旋转图像

 public  IplImage rotateImage(IplImage img) {
        IplImage img_rotate = IplImage.create(img.height(), img.width(),
                img.depth(), img.nChannels());
        //acctually, I don't know how to use these two methods properly
        cvTranspose(img, img_rotate);
        cvFlip(img_rotate, img_rotate, 1);   //?????90?

        return img_rotate;
    }
我在其中调用rotate from onPreviewFrame()的代码:

因此,我得到下图

在另一篇文章中,我知道我们必须使用

    rgbimage = IplImage.create(imageWidth, imageHeight, IPL_DEPTH_8U, 3);
    opencv_imgproc.cvCvtColor(yuvimage, rgbimage, opencv_imgproc.CV_YUV2BGR_NV21);

然后我们可以轮换,但每当我使用它时,有时会出现异常BufferOverflow,有时会出现RuntimeException

我建议升级到OpenCV2.0或3.0,因为大多数cvXXX函数只是将IplImage*结构转换为Mat对象(没有深度副本)。您正在使用的api是旧的。@Rahul..我不知道如何实现新的jar,因为类现在已经更改了。你能给我提供开始的代码吗?你应该使用cvTranspose()或cv::transpose(),因为它更有效。同样,我建议升级到OpenCV2.0,因为大多数cvXXX函数只是将IplImage*结构转换为Mat对象(没有深度副本)。如果将图像存储在Mat对象中,Mat.t()将返回转置。任何旋转:应该通过在变换矩阵的一般框架中定义旋转矩阵来使用CVWAPPRAFFE。使用2.0/3.0,您可以使用warpAffine进行上述操作。你能给我CVTransposeSeit的代码吗?我在上面的评论中提到的链接中有吗
    rgbimage = IplImage.create(imageWidth, imageHeight, IPL_DEPTH_8U, 3);
    opencv_imgproc.cvCvtColor(yuvimage, rgbimage, opencv_imgproc.CV_YUV2BGR_NV21);