比较编译log

先看ARM64-windows是如何优化的

从这里看如何ARM64-windows

prepare to build for ARM64 on Windows with Visual Studio · opencv/opencv@b6ec9b9

    if(MSVC)

      ocv_update(CPU_NEON_DOTPROD_FLAGS_ON "")

      ocv_update(CPU_NEON_FP16_FLAGS_ON "")

      ocv_update(CPU_NEON_BF16_FLAGS_ON "")

也就是这个feature开启了,目标是对齐他即可。

从log看工作量和工作流程

这里看

Adding build for ARM64 Windows10 by shibayan · Pull Request #16027 · opencv/opencv

还有113个文件需要修改

搜索_M_ARM6400代码有17个文件

https://github.com/search?q=repo%3Aopencv%2Fopencv+_M_ARM64&type=code

类似的头文件和cmakelists.txt文件

如何理解优化看如下文档链接至少3遍

Build options 官方说明

CPU optimizations build options · opencv/opencv Wiki

OpenCV 配置选项参考文档-CSDN博客

cpu_dispatch_0_baseline.png (1772×703)

配置编译好了,如何查看

当你设置 OPENCV_DUMP_CONFIG 环境变量为 1 时,OpenCV 会在启动时 dump 编译和版本信息到控制台。这个信息包括:

  • OpenCV 版本号
  • 编译器版本号
  • 编译选项
  • 支持的功能和模块

编译还是遇到错误:

__uint64x1_t_to_n64 在ARM64-windows SDK的问题?

哦,居然有人在使用windows-arm64 这个服务器来测试了,而且发现了cross编译的问题了。

Build OpenCV Windows MSVC 2022 ARM64 failed during usage of Github CI Worker · Issue #27401 · opencv/opencv

哦真的有这个patch啊,怀疑居然是windows的sdk的问题了

这个 opencv-mobile/fix-windows-sdk-26100-arm64-wchar.patch at master · nihui/opencv-mobile

另外的大神是多尝试

(experimental) support _M_ARM64EC for MSVS2022 by Kumataro · Pull Request #27416 · opencv/opencv

# See https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/

# See https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/index-legacy

# set(CMAKE_SYSTEM_VERSION 10.0.26100.4188) # NG

# set(CMAKE_SYSTEM_VERSION 10.0.26100.2454) # NG

# set(CMAKE_SYSTEM_VERSION 10.0.26100)      # NG

# set(CMAKE_SYSTEM_VERSION 10.0.22621.5040) # NG

# set(CMAKE_SYSTEM_VERSION 10.0.22621.1778) # NG

# set(CMAKE_SYSTEM_VERSION 10.0.22621.755) # NG

set(CMAKE_SYSTEM_VERSION 10.0.22621.0) # OK

可怜的人啊,他尝试了多少次啊?

有人伸出援助之手,

https://github.com/opencv/opencv/pull/27416

我手动合入到4.10从4.11,其实差了一个patch,事后后悔了。

无数次的的更新怀疑自我:

无数次的尝试,关闭了许多FEATURE,尝试了无数次的组合,不同的vs studio版本,不同的CMAKE,不同的opencv分支,不同的硬件PC,等等,以上排列组合下。

cmake -S . -B ARM0611preview_png_libjpegturbo_off -A ARM64 -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_opencv_world=ON -DCMAKE_INSTALL_PREFIX=install -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=ARM64 -DCPU_BASELINE=NEON -DENABLE_FP16=OFF -DENABLE_DOTPROD=OFF -DWITH_OPENEXR=OFF -DBUILD_opencv_dnn=OFF -DBUILD_opencv_world=OFF -DPNG_ARM_NEON=off -DENABLE_LIBJPEG_TURBO_SIMD=OFF

这个终于通过了,而且能执行得到结果了。

直面问题,搜索和询问AI,

我生成了,好像成功了

******************************************************************

* FATAL ERROR:                                                   *

* This OpenCV build doesn't support current CPU/HW configuration *

*                                                                *

* Use OPENCV_DUMP_CONFIG=1 environment variable for details      *

******************************************************************

Required baseline features:

    ID=100 (NEON) - NOT AVAILABLE

现实很残酷。

为什么呢?我都是跟ARM64-windows一样的参数了啊,编译环境都一样了啊。还是头文件修改不到位吧,重新上文的流程,从第一步开始。

17个文件就17个吧,一个个细细读下,到底是否加上_M_ARM64EC这个宏。按理解和查询来尝试吧。

哦,最后终于形成了VCPKG的版本,方便发布,测试比以前好了。

满纸荒唐言,一把辛酸泪。

都云作者痴,谁解其中味

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐