【鸿蒙在OpenHarmony系统上集成OpenCV,实现图片裁剪】

鸿蒙在OpenHarmony系统上集成OpenCV,实现图片裁剪

OpenCV 介绍

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由一系列的 C 函数和少量 C++ 类构成,同时提供 Python、Java 和 MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV 具有极广的应用领域,它包括但不限于:

人脸识别和物体识别:这是 OpenCV 的一项重要功能,应用在许多领域,如安全监控、交互设计等。

图像和视频分析:如图像增强、图像分割、视频跟踪等。

图像合成和 3D 重建:在图像处理和计算机视觉领域,OpenCV 可以用于创建 AR 或 VR 效果,生成 3D 模型等。

机器学习:OpenCV 内置了大量的机器学习算法,可以用于图像分类、聚类等任务。

深度学习:OpenCV 中的 dnn 模块提供了一系列深度学习模型的接口,用户可以加载预训练模型进行图像识别、目标检测等任务。

下面是在OpenHarmony系统上通过OpenCV实现图片裁剪。

c 复制代码
sta
tic napi_value CropImage(napi_env env, napi_callback_info info) {
    LOGD("CropImage........\n");
    napi_value result;
    int x, y, width, height;
    size_t argc = 6;
    napi_value args[6] = {nullptr};ji
    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
    size_t strSize;
    char strBuf[256];
    napi_get_value_string_utf8(env, args[0], strBuf, sizeof(strBuf), &strSize);
    // 传入文件路径
    std::string inputFileName(strBuf, strSize);

    napi_create_object(env, &result);
    // 使用C++接口读取图像
    cv::Mat img = cv::imread(inputFileName, cv::IMREAD_COLOR); // 使用cv::Mat自动管理内存,无需手动释放
    if (img.empty()) {
        std::cout << "Error loading image" << std::endl;
        LOGD("Error loading image........\n");
        napi_create_int32(env, -1, &result);
        return result;
    }
    napi_get_value_int32(env, args[1], &x);
    napi_get_value_int32(env, args[2], &y);
    napi_get_value_int32(env, args[3], &width);
    napi_get_value_int32(env, args[4], &height);
    // 定义裁剪区域(x, y, width, height)
    cv::Rect roi(x, y, width, height); // 使用cv::Rect定义区域,更直观和方便
    cv::Mat cropImg = img(roi);        // 直接使用操作符进行裁剪
    napi_get_value_string_utf8(env, args[5], strBuf, sizeof(strBuf), &strSize);
    // 传出文件路径
    std::string saveFileName(strBuf, strSize);
    // 保存裁剪后的图像
    cv::imwrite(saveFileName, cropImg); // 使用cv::imwrite保存图像,自动管理内存和文件操作
    LOGD("保存裁剪后的图像........\n");
    napi_create_int32(env, 0, &result);

    return result;
}

参考:OpenHarmony OpenCV应用样例开发

相关推荐
__Benco6 小时前
OpenHarmony子系统开发 - 热管理(一)
人工智能·harmonyos
HMS Core7 小时前
鸿蒙版小红书如何让图库访问完全由“你”掌控
安全·华为·harmonyos
SuperHeroWu77 小时前
【HarmonyOS 5】鸿蒙中如何使用MQTT
mqtt·华为·harmonyos
环信即时通讯云9 小时前
环信鸿蒙版 UIKit 快速上手指南
华为·harmonyos
鸿蒙布道师12 小时前
鸿蒙NEXT开发资源工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
进来有惊喜13 小时前
OpenCV 表情识别
人工智能·opencv·计算机视觉
进来有惊喜13 小时前
opencv指纹匹配
人工智能·opencv·计算机视觉
别说我什么都不会13 小时前
OpenHarmony 实战开发—— IPC与RPC通信
rpc·harmonyos
二十秒的勇气14 小时前
HarmonyOS:HMPermission权限请求框架
华为·harmonyos
jndingxin14 小时前
OpenCV 图形API(24)图像滤波-----双边滤波函数bilateralFilter()
人工智能·opencv·计算机视觉