TextureRenderTarget2Dを高速にUTexture2Dへ変換

お世話になっております。
今回はTextureRendertarget2Dを高速にUTexture2Dへ変換する方法を教えてもらいたいです。

やりたいことはキャラクターの視点画像をcv::Matに変換することです。
色々調べてみたところTextureRendertarget2D->UTexture2D->cv::Matと変換する必要がありそうだったので、以下のようなコードを書きました。

cv::Mat UTextureHelper::TextureToMat(UTextureRenderTarget2D * RTarget)
{
	if (!RTarget)
	{
		return cv::Mat();
	}

	int i = time(NULL);
	// RenderTargetからTexture2Dを作成
	auto Dst = RTarget->ConstructTexture2D((UObject*)GetTransientPackage(), "T_TRender512_"+FString::FromInt(i), EObjectFlags::RF_NoFlags, CTF_DeferCompression);//処理に時間がかかる

	if (!Dst)
	{
		return cv::Mat();
	}

	RTarget->CompressionSettings = TextureCompressionSettings::TC_VectorDisplacementmap;
#if WITH_EDITORONLY_DATA
	Dst->MipGenSettings = TextureMipGenSettings::TMGS_NoMipmaps;
#endif
	Dst->SRGB = 1;
	Dst->UpdateResource();//処理に時間がかかる

	auto texture = Dst;
	FTexture2DMipMap* MyMipMap = &texture->PlatformData->Mips[0];
	FByteBulkData* RawImageData = &MyMipMap->BulkData;
	FColor* FormatedImageData = static_cast<FColor*>(RawImageData->Lock(LOCK_READ_ONLY));

	auto height = MyMipMap->SizeY;
	auto width = MyMipMap->SizeX;
	cv::Mat mat(height, width, CV_8UC3);

	for (int y = 0; y < height; ++y)
	{
		auto ptr = mat.ptr<cv::Vec3b>(y);
		for (int x = 0; x < width; ++x)
		{
			auto color = FormatedImageData[y * width + x];
			ptr[x][0] = color.B;
			ptr[x][1] = color.G;
			ptr[x][2] = color.R;
		}
	}

	RawImageData->Unlock();

	return mat;
}

このようなコードを書いたところ実行におおよそ200ms程かかりました。
一瞬画面が止まってしまうのでどうにか17~34msに収めたいのですが何処かに改善できそうな箇所はないでしょうか?

こちらで調べてみたところ、
UTextureRenderTarget2D::ConstructTexture2D関数
UTexture2D::UpdateResource関数
の2つに時間がかかるようです。

このTextureToMat関数は4フレームごとに呼び出すつもりです。

よろしくお願いします。

ConstructTexture2Dは、Texture2Dをオブジェクト生成するため比較的重い処理で、4フレーム毎に呼ぶ処理としては向いていないように思います。また4.16でのコードを見る限り、Editor上での実行でしか許可されていないため、Packしても動作しないです(比較的重い処理であることからランタイムでの実行が想定されていない可能性があります)。
UpdateResourceでヒッチが発生しているのも恐らく、ストリーミング可能になるまでSleepが発生しているのかと思います。記載していただいたコードやOpenCVに関する検証を行っていないため、最良のインタフェースをここでは提示していませんが、このコードでTextureRenderTarget2D->Texture2Dの変換を頻繁に行うのはヒッチが発生することが想定されます。

ありがとうございます。
あまり呼び出さない方法を考えようと思います。

Can you write English or Chinese??