Поворот изображения не работает

Я пытаюсь повернуть изображение с помощью openFrameworks, но у меня есть проблема. Мое повернутое изображение — красный вместо его оригинального цвета.

void testApp::setup(){
image.loadImage("abe2.jpg");
rotatedImage.allocate(image.width, image.height, OF_IMAGE_COLOR);

imageCenterX = image.getWidth() / 2;
imageCenterY = image.getHeight() / 2;
w = image.getWidth();
h = image.getHeight();
int degrees = 180;
float radians = (degrees*(PI / 180));

for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int index = image.getPixelsRef().getPixelIndex(x, y);

int newX = (cos(radians) * (x - imageCenterX) - sin(radians) * (y - imageCenterY) + imageCenterX);
int newY = (sin(radians) * (x - imageCenterX) + cos(radians) * (y - imageCenterY) + imageCenterY);

int newIndex = rotatedImage.getPixelsRef().getPixelIndex(newX, newY);

rotatedImage.getPixelsRef()[newIndex] = image.getPixelsRef()[index];
}
}
rotatedImage.update();
}

void testApp::update(){
}

void testApp::draw(){
image.draw(0,0);
rotatedImage.draw(0,400);
}

Может кто-нибудь сказать мне, что я делаю не так?

1

Решение

Если ваше изображение имеет три цветовых компонента (красный, зеленый, синий), вам необходимо преобразовать все три из них. Следующее должно сделать трюк:

rotatedImage.getPixelsRef()[newIndex] = image.getPixelsRef()[index];
rotatedImage.getPixelsRef()[newIndex+1] = image.getPixelsRef()[index+1];
rotatedImage.getPixelsRef()[newIndex+2] = image.getPixelsRef()[index+2];
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]