扩展库 / opencv
opencv
图像读写、裁剪、缩放、变换与张量转换。
当前 Windows 包通过 bin/opencv_xlang.dll 接入后端。桥接 DLL 的源码尚未提供;本页说明已验证的 C/xlang 调用接口,不代表后端所有算法、平台或并发行为已验收。
OPENCV_XLANG_DLL 指定后端路径时只尝试该文件;未设置时才搜索常规位置。缺少公开桥接符号的 DLL 会被拒绝,available() 不会误报可用。
主要接口
| 接口 | 用途 |
|---|---|
available()、backend() | 检查后端并查询加载路径 |
imread(path)、imwrite(path, image) | 读写图像 |
resize(image, width, height)、crop(...) | 缩放与裁剪 |
Image.width()、height()、release() | 读取尺寸并释放图像句柄 |
xlang
import opencv
auto source = opencv.imread("extlibs/opencv/test/fixture.ppm")
assert source.valid()
auto resized = opencv.resize(source, 4, 4)
assert resized.valid()
println("opencv image: " + string(source.width()) + " x " + string(source.height()) +
" -> " + string(resized.width()) + " x " + string(resized.height()))
resized.release()
source.release()
C
包含 include/opencv.h。opencv_imread_native、opencv_resize_native 等返回拥有型句柄,使用 opencv_release_native 释放;backend、last_error 等文本是借用结果,不得释放。对应范例在 examples/image_info_c.c,从发行目录可直接用 xl run extlibs/opencv/examples/image_info_c.c 或构建为 C 可执行文件。
完整截图范例 examples/extlibs/opencv.xl 需要可截图的桌面;图像文件使用独占系统临时目录并在退出时删除,不覆盖工作目录中的固定文件。日常双语门禁仍使用包内固定 PPM 夹具,不依赖桌面截图。
验证范围
当前 Windows 包级门禁:GCC 分离构建、C 单文件运行与构建执行、XLang JIT/AOT 对同一张 P6 图片读入及缩放的输出一致。包级调用还覆盖缺图、无效尺寸、隐式析构、UTF-8 路径、显式后端路径及残缺桥接 DLL 拒绝;首次查询 last_error 也会等待完整装载,再返回可读诊断。XLang 读写路径中的 NUL 会被拒绝。旧构建的带输出 AOT 缺符号在当前发布物中不再复现。桥接 DLL 的源码和算法矩阵由插件独立维护,不作为本包调用层验收条件。