【鸿蒙在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应用样例开发

相关推荐
可爱系程序猿20 分钟前
OpenCV 项目启动时报 opencv_world480.dll:先核对构建与架构
人工智能·opencv·程序人生·架构·电脑
HarmonyOS_SDK39 分钟前
【HarmonyOS SDK Skills】快速适配鸿蒙窗口智感旋转能力
harmonyos
马剑威(威哥爱编程)1 小时前
【HarmonyOS 7 小艺智能体实战】02:动工前的清单——账号、资质、工具链一次备齐
人工智能·华为·harmonyos
FOAF-lambda2 小时前
Python实战:基于OpenCV与单调栈,精准定位PDF中最大的空白区域
python·opencv·pdf
熊猫钓鱼>_>2 小时前
端侧高斯泼溅(3DGS)渲染与性能调优初探:把“实景重建“跑在手机上【鸿蒙心迹】
开发语言·3d·华为·智能手机·harmonyos
2501_919749032 小时前
分享一款实用的鸿蒙App,整体感觉不错
华为·harmonyos
贵州诚鑫致达科技有限公司2 小时前
接入汇聚都是环怎么防环路?华为SEP加RRPP混合环
服务器·华为·php
三掌柜6662 小时前
04|鸿蒙7·端侧AI实战:检索增强,把证据带进回答
人工智能·华为·harmonyos
心态还需努力呀2 小时前
把 Zettlr 搬上鸿蒙 PC:墨匣学术写作编辑器移植与上架全记录
华为·编辑器·harmonyos
特立独行的猫a2 小时前
AI时代的应用开发神器:cj-tauri 已支持鸿蒙 PC,第一次的踩坑记录
ui·harmonyos·tauri·仓颉·鸿蒙pc·cj-tauri