Canvas在旋转

时间:2016-07-04 15:03:45

标签: android opencv canvas image-rotation

我正在使用机器人应用程序团队为 Android 制作的face recognizer project example OpenCV ,但相机不符合预期,轮换已经错误,为了旋转相机视图以在纵向方向使用,我们必须在 deliverAndDrawFrame <中旋转 CameraBridgeViewBase 内的画布em>方法,我有下一个画布旋转方法:

canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
canvas.rotate(180);
mScale = canvas.getWidth() / (float) mCacheBitmap.getHeight();
float scale2 = canvas.getHeight() / (float) mCacheBitmap.getWidth();
if (scale2 > mScale) {
    mScale = scale2;
}
if (mScale != 0) {
     canvas.scale(mScale, mScale, 0, 0);
}
Log.d(TAG, "mStretch value: " + mScale);
canvas.drawBitmap(mCacheBitmap, 0, -mCacheBitmap.getHeight(), null);
// ...

当我使用值为90 canvas.rotate(90); 的旋转方法时,它会返回按预期旋转90度的图像,但是当我旋转超过90或小于90时,0 ,-90,180,270等返回黑色图像 :(

此代码有什么问题?

1 个答案:

答案 0 :(得分:2)

关于协调系统。 Canvas属性具有填充样式默认值:&#34; black&#34;。由于您的图像离开场景,因此您会看到黑色图像。 在你的情况下,你正在旋转它(0,0)。您应该将图像的原点更改为图像的中间位置(宽度/ 2,高度/ 2)。