{ auto data = reinterpret_cast<void *>(addr); cv::Mat rgbaMat(height, width, CV_8UC4, data); cv::Mat rgbMat; cv::Mat rgbOutMat; cv::Mat outMat; cv::cvtColor(rgbaMat, rgbMat, cv::COLOR_RGBA2RGB); // RGBA->RGB rgbMat.convertTo(rgbOutMat, -1, 1.0, cnt % 200 - 100.0); // -100〜+100 cv::cvtColor(rgbOutMat, outMat, cv::COLOR_RGB2RGBA); // RGBAに戻す // メモリ解放処理いらない if (SDL_MUSTLOCK(screen)) // 描画処理はちょっと⾯倒 SDL_LockSurface(screen); cv::Mat dstRGBAImage(height, width, CV_8UC4, screen->pixels); outMat.copyTo(dstRGBAImage); if (SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); SDL_Flip(screen); } 16