UE4中通过Opencv读取网络摄像头画面

首先参考https://wiki.unrealengine.com/Detailed_Account_Of_Integrating_OpenCV_Into_UE4_With_VS2017

配置好环境。

切记一定要仔细,不要遗漏任何步骤,这里就不过多赘述。

那么这里主要记录如何获得图像简单的方法在UE4中显示出来。

首先是头文件CamData.h加入


UFUNCTION(BlueprintCallable, Category = "UsbCam")
static UTexture2D* VideoTexture();

static Mat frame;

static TArray Data;


其次在源文件CamData.cpp加入

UTexture2D* UCamData::VideoTexture()
{
UsbCamera >> frame;


UTexture2D* TextureRed = NULL;

for (int x = 0; x{
for (int y = 0; y{
int i = x + (y * VideoFrameSize.X);
Data[i] = FColor(
frame.data[i * 3 + 2],
frame.data[i * 3 + 1],
frame.data[i * 3 + 0],
255
);
}
}
TextureRed = UTexture2D::CreateTransient((int32)VideoFrameSize.X,(int32)VideoFrameSize.Y, PF_B8G8R8A8); //创建纹理
void* TextureData = TextureRed->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE); //锁定纹理
FMemory::Memcpy(TextureData, Data.GetData(), Data.Num());
TextureRed->PlatformData->Mips[0].BulkData.Unlock(); //解锁纹理
TextureRed->UpdateResource(); //更新纹理

return TextureRed;
}

这样在打开摄像头的基础上 在蓝图中调用一次VideoTexture 就会获得一张摄像头的画面。

你可能感兴趣的:(Opencv,UE4)