環境:Windows10+UE4.24.2+opencv3.4.9+vs2019
網上的教程版本比較舊,試了一遍,編譯報錯。
步驟1:創建OpenCV新插件。
打開UE->編輯->插件->新插件,選擇第三方庫,插件名稱OpenCV,點擊創建插件,會在項目的目錄下創建一個Plugins/OpenCV文件。OpenCV目錄下的文件如下圖所示。
步驟2:文件拷貝。
在官網下載opencv並解壓。
將opencv_world349.lib、opencv_world340d.lib、opencv_ffmpeg349_64.dll、opencv_world349.dll拷貝至.\Plugins\OpenCV\Binaries\ThirdParty\OpenCVLibrary\Win64\ 目錄下。
將opencv_world349.lib、opencv_world340d.lib、opencv_ffmpeg349_64.dll、opencv_world349.dll、opencv_world349.pdb、opencv_world349d.pdb拷貝至.\Plugins\OpenCV\Binaries\Win64目錄下。
將解壓後的include文件夾拷貝至.\Plugins\OpenCV\Binaries\ThirdParty目錄下和.\Plugins\OpenCV\Source\ThirdParty\OpenCV目錄下。
將解壓後.\opencv\build\x64\vc15\lib和.\opencv\build\x64\vc15\bin裏的文件(根據自己使用的cv14還是cv15找對應目錄)拷到.\Plugins\OpenCV\Source\ThirdParty\OpenCV\OpenCVLibrary\x64\Release。
步驟3:更改OpenCV.Build.cs文件。
該文件位於.\Plugins\OpenCV\Source\OpenCV下。更改後如下:
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.IO;
public class OpenCV : ModuleRules
{
private string ThirdPartyPath
{
get
{
return Path.GetFullPath(Path.Combine(ModuleDirectory, "../ThirdParty"));
}
}
public OpenCV(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"OpenCVLibrary",
"Projects",
"CoreUObject",
"Engine",
"InputCore",
"OpenCV"
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Slate",
"SlateCore"
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
string OpenCVPath = Path.Combine(ThirdPartyPath, "OpenCV");
if (Target.Platform == UnrealTargetPlatform.Win64)//64位平臺
{
string OpenCVIncludePath = Path.Combine(OpenCVPath, "Include");
string OpenCVLibPath = Path.Combine(OpenCVPath, "OpenCVLibrary", "x64", "Release");
PublicIncludePaths.Add(OpenCVIncludePath);
PublicLibraryPaths.Add(OpenCVLibPath);
//Add Static Libraries
PublicAdditionalLibraries.Add("opencv_world349.lib");
PublicAdditionalLibraries.Add("opencv_world349d.lib");
//Add Dynamic Libraries
PublicDelayLoadDLLs.Add("opencv_world349.dll");
PublicDelayLoadDLLs.Add("opencv_ffmpeg349_64.dll");
}
else if (Target.Platform == UnrealTargetPlatform.Win32) //32位平臺
{
//32位的OpenCV庫,仿照上面Win64的自己填寫
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
//Mac
}
}
}
步驟4:更改包含目錄。
選擇項目->屬性->C++目錄->包含目錄,添加include目錄。
步驟5:編譯。
在UE裏編譯看是否會報錯。編譯的時間可能會比較長,耐心等待。
以上就是配置全過程。下一篇將介紹如何在UE中基於C++調用opencv庫,實現圖像視頻的處理。
參考:
https://www.jianshu.com/p/953fe8beee1f
資源:
只包含opencv的build文件,不包含source,請謹慎下載。(如資源不能下載,請聯繫我,將更新鏈接)也可到官網自行下載。