Baumer工业相机堡盟工业相机如何联合OpenHarmony框架开发连接USB相机(OpenHarmony)

本文主要是介绍Baumer工业相机堡盟工业相机如何联合OpenHarmony框架开发连接USB相机(OpenHarmony),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Baumer工业相机堡盟工业相机如何联合OpenHarmony框架开发连接USB相机(OpenHarmony)

  • Baumer工业相机介绍
  • OpenHarmony介绍
  • 使用OpenHarmony开发连接Baumer工业USB相机
    • 1.配置权限
    • 2.初始化相机功能
    • 3.使用USB相机采集图像
    • 4.使用USB相机保存图像
    • 5.释放相机资源
  • Baumer工业相机联合OpenHarmony开发连接USB相机的优势
  • Baumer工业相机联合OpenHarmony开发连接USB相机的行业应用

Baumer工业相机介绍

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。

Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。

Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。

Baumer工业相机NEOAPI SDK是用于Baumer工业相机的一款最新的软件开发工具包(SDK)。它为开发人员提供了一系列API和工具,用于与Baumer工业相机进行通信和控制,控制方式极为便捷类似Halcon的相机助手类控制方式。​

本文只介绍使用OpenHarmony连接Baumer的USB相机,后续会相应测试网口Gige相机.

可以使用RK3568开发板和最新的DevEco Studio版本进行测试,具体如何搭建OpenHarmony开发环境并连接开发板进行调试,这里不再赘述,可以参考其它相关文档。

OpenHarmony介绍

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展

OpenHarmony 框架支持在设备上操作相机和使用相机功能,为用户提供拍照和录像等场景的支持。本篇文章将介绍相机的开发流程和API的用法,详细如何在自己的应用中使用相机。

OpenHarmony 框架相机功能需要调用相机管理接口、图片处理接口、媒体服务接口和媒体库管理接口等API和组件实现完整的相机操作和使用。

使用OpenHarmony开发连接Baumer工业USB相机

下面介绍在基于开发板使用OpenHarmony连接Baumer工业USB相机并进行采图保存的流程

1.根据camera的getCameraManager方法获取CameraManager

2.通过CameraManager获取所有的相机数组,找到可用的相机,并获取相机的cameraid

3.创建图片接收器并进行订阅,获取receiver的surfaceId

4.通过CameraManager的createCameraInput(cameraid)创建相机输入流

5.通过camera的createPreviewOutput(sufaceId)创建相机预览输出流.这里sufaceId为XComponent的id

6.通过camera的createPhotoOutput(sufaceId)创建相机拍照输出流.这里sufaceId为图片接收器的surfaceId

7.会话管理:创建会话,并且配置会话的相机输入流,相机拍照输出流与相机预览流,提交配置,开始会话

1.配置权限

在进行相机功能开发前需要先在配置文件中配置需要的权限信息。
Stage 模型配置 module.json5

代码如下(示例):

{"module":{..."requestPermissions": [{"name": "ohos.permission.CAMERA"},{"name": "ohos.permission.MICROPHONE"},{"name": "ohos.permission.MEDIA_LOCATION"},{"name": "ohos.permission.READ_MEDIA"},{"name": "ohos.permission.WRITE_MEDIA"}  ]} ...
}

FA 模型配置 config.json

{..."module":{..."reqPermissions": [{"name": "ohos.permission.CAMERA"},{"name": "ohos.permission.MICROPHONE"},{"name": "ohos.permission.MEDIA_LOCATION"},{"name": "ohos.permission.READ_MEDIA"},{"name": "ohos.permission.WRITE_MEDIA"}]}...
}

2.初始化相机功能

import camera from '@ohos.multimedia.camera'
import image from '@ohos.multimedia.image'
import fileio from '@ohos.fileio'
import mediaLibrary from '@ohos.multimedia.mediaLibrary
const Camerasize = {WIDTH: 640,HEIGHT: 4808}//获取相机管理器
import Camera from '@ohos.multimedia.camera'
CameraManager = await Camera.getCameraManager(context: Context): Promise<CameraManager>
//获取支持的所有相机设备列表
Cameras = await CameraManager.getCameras(): Promise<Array<Camera>>// 定义变量private mXComponentController = new XComponentController()private cameraManager: camera.CameraManager = undefinedprivate cameras: Array<camera.Camera> = undefinedprivate cameraId: string = undefinedprivate mReceiver: image.ImageReceiver = undefinedprivate cameraInput: camera.CameraInput = undefinedprivate previewOutput: camera.PreviewOutput = undefinedprivate mSurfaceId: string = undefinedprivate photoOutput: camera.PhotoOutput = undefinedprivate captureSession: camera.CaptureSession = undefinedprivate mediaUtil: MediaUtil = undefined@State desStr: string = ""private fileAsset: mediaLibrary.FileAssetprivate surfaceId: number@State photoUriMedia: string = ""private photoFlag: boolean = true@State  imgUrl: string = ""@State isMediaUrl:boolean=true  //判断保存路径为是沙箱路径或者媒体路径,默认媒体路径aboutToAppear(){this.mediaTest = mediaLibrary.getMediaLibrary(globalThis.context)}

3.使用USB相机采集图像

   //初始化相机和会话管理async initCamera(surfaceId: number) {this.cameraManager = await camera.getCameraManager(globalThis.context)//需要在Ability中定义globalThis.context=this.contextthis.cameras = await this.cameraManager.getCameras()this.cameraId = this.cameras[1].cameraIdawait this.photoReceiver() //创建图片接收器并进行订阅this.mSurfaceId = await this.mReceiver.getReceivingSurfaceId()this.cameraInput = await this.cameraManager.createCameraInput(this.cameraId)this.previewOutput = await camera.createPreviewOutput(surfaceId.toString())this.photoOutput = await camera.createPhotoOutput(this.mSurfaceId)this.captureSession = await camera.createCaptureSession(globalThis.context)await this.captureSession.beginConfig()await this.captureSession.addInput(this.cameraInput)await this.captureSession.addOutput(this.previewOutput)await this.captureSession.addOutput(this.photoOutput)await this.captureSession.commitConfig()await this.captureSession.start().then(() => {console.log('zmw1--Promise returned to indicate the session start success.');})}//创建图片接收器并进行订阅async photoReceiver() {this.mReceiver = image.createImageReceiver(CameraSize.WIDTH, CameraSize.HEIGHT, 4, 8)let buffer = new ArrayBuffer(4096)this.mReceiver.on('imageArrival', () => {console.log("zmw -service-imageArrival")this.mReceiver.readNextImage((err, image) => {if (err || image === undefined) {return}image.getComponent(4, (errMsg, img) => {if (errMsg || img === undefined) {return}if (img.byteBuffer) {buffer = img.byteBuffer}if(this.isMediaUrl){this.savePictureMedia(buffer, image)}else{this.savePictureSand(buffer, image)}})})return buffer})}

4.使用USB相机保存图像

  //拍摄照片async takePicture() {let photoSettings = {rotation: camera.ImageRotation.ROTATION_0,quality: camera.QualityLevel.QUALITY_LEVEL_LOW,mirror: false}await this.photoOutput.capture(photoSettings)}//保存沙箱路径async savePictureSand(buffer: ArrayBuffer, img: image.Image) {let info = this.mediaUtil.getInfoFromType(mediaLibrary.MediaType.IMAGE)let dateTimeUtil = new DateTimeUtil()let name = `${dateTimeUtil.getDate()}_${dateTimeUtil.getTime()}`let displayName = `${info.prefix}${name}${info.suffix}`let sandboxDirPath = globalThis.context.filesDir;let path = sandboxDirPath + '/' + displayNamethis.imgUrl=pathlet fdSand = await fileio.open(path, 0o2 | 0o100, 0o666);await fileio.write(fdSand, buffer)await fileio.close(fdSand).then(()=>{this.desStr=""});await img.release()}
//保存媒体路径async savePictureMedia(buffer: ArrayBuffer, img: image.Image) {this.fileAsset = await this.mediaUtil.createAndGetUri(mediaLibrary.MediaType.IMAGE)this.imgUrl = this.fileAsset.urilet fd = await this.mediaUtil.getFdPath(this.fileAsset)await fileio.write(fd, buffer)await this.fileAsset.close(fd).then(()=>{this.desStr=""})await img.release()}

5.释放相机资源

  //结束释放相机资源async releaseCamera() {if (this.captureSession) {await this.captureSession.stop().then(() => {})}if (this.cameraInput) {await this.cameraInput.release().then(() => {})}if (this.previewOutput) {await this.previewOutput.release().then(() => {})}if (this.photoOutput) {await this.photoOutput.release().then(() => {})}// 释放会话if (this.captureSession) {await this.captureSession.release((err) => {if (err) {console.error('zmw  Failed to release the CaptureSession instance ${err.message}');return;}});}}

Baumer工业相机联合OpenHarmony开发连接USB相机的优势

连接Baumer的工业USB相机并联合OpenHarmony开发具有许多优势,尤其是在工业应用中。下面详细介绍这些优势:

  1. 开放性和兼容性
  • 多设备支持: OpenHarmony框架提供了对多种设备的支持,包括USB相机,这意味着可以轻松地集成和连接各种品牌和型号的USB相机。
  • 行业标准兼容: OpenHarmony遵循行业标准,提高了USB相机与OpenHarmony框架的兼容性,确保设备的稳定和高效运行。
  1. 多样化的应用场景
  • 工业自动化: USB相机与OpenHarmony框架集成后,可用于工业自动化应用,包括视觉检测、质量控制和生产过程监控。
  • 智能监控: 结合OpenHarmony的USB相机可用于智能监控系统,比如安全监控、环境监测等。
  1. 软硬件协同优势
  • 设备管理: OpenHarmony提供了先进的设备管理功能,可管理USB相机的连接、数据传输和状态监控,实现了软硬件的无缝协同。
  • 驱动支持: OpenHarmony框架提供了对USB相机驱动的支持,简化了相机的使用和管理。
  1. 数据安全和隐私保护
  • 安全机制: OpenHarmony提供了完善的安全机制,可保护USB相机传输的数据,防止数据泄露和恶意攻击。
  • 隐私保护: 在处理USB相机收集的图像数据时,OpenHarmony框架提供了隐私保护功能,确保敏感信息的安全性。
  1. 系统稳定性和性能优化
  • 稳定性: OpenHarmony框架的稳定性和可靠性有助于确保USB相机系统的稳定运行,降低了系统崩溃和故障的风险。
  • 性能优化: OpenHarmony提供了性能优化的工具和机制,可优化USB相机的数据处理和传输效率,提高整体系统性能。

结论
通过联合OpenHarmony开发连接USB相机,可以在工业应用中获得多种优势,包括兼容性、多样化的应用场景、软硬件协同、数据安全和系统稳定性。这种集成提供了更强大、灵活和可靠的工业视觉解决方案,有助于提升生产效率和质量,并支持智能制造和工业自动化的发展。

Baumer工业相机联合OpenHarmony开发连接USB相机的行业应用

工业相机联合OpenHarmony开发连接USB相机的行业应用

连接USB相机并联合OpenHarmony开发在多个行业中具有广泛的应用,为各种应用场景提供了更灵活、可靠的视觉解决方案,包括但不限于以下几个行业:

  1. 制造业
  • 视觉检测与质量控制: 工业相机结合OpenHarmony和USB相机可用于产品表面缺陷检测、尺寸测量等质量控制领域,提高生产线的自动化程度和产品质量。
  • 生产过程监控: 实时监控生产线上的制造过程,识别异常,并对设备运行状态进行分析和优化。
  1. 智能制造
  • 设备联动与智能优化: 结合视觉识别功能,实现设备间的联动协作,并根据实时反馈进行智能优化,提高生产效率和响应速度。
  • 远程监控与维护: 通过USB相机及OpenHarmony连接,实现对智能制造设备进行远程监控和维护,降低故障维修成本,提高设备利用率。
  1. 智能安防
  • 视频监控系统: 将USB相机与OpenHarmony框架集成,实现高清晰度的视频实时监控,结合人脸识别、运动追踪等功能,提高智能安防系统的精准性和实时性。
  • 智能入侵检测: 利用USB相机采集的图像数据,通过OpenHarmony进行智能分析,实现对入侵行为的快速识别和报警。
  1. 医疗行业
  • 医学成像: USB相机通过OpenHarmony框架实现对医学成像设备的连接,提高医学图像采集和处理的效率,同时保障医学数据的安全性和隐私保护。
  • 远程医疗诊断: 结合USB相机和OpenHarmony的功能,实现对远程医疗诊断设备的图像传输和实时沟通,促进远程医疗服务的发展。
  1. 农业与环境监测
  • 智能农业: USB相机通过OpenHarmony框架实现智能农业领域应用,例如植物生长监测、病虫害识别和农作物采收等。

  • 环境监测: 利用USB相机对环境进行实时视频监控,适用于自然环境变化监测、野生动物追踪和环境污染检测等。

    **结论 **

工业相机联合OpenHarmony开发连接USB相机的行业应用极为广泛,覆盖制造业、智能制造、智能安防、医疗行业、农业与环境监测等多个领域,为各个行业提供了先进的视觉解决方案,推动了企业的自动化、智能化发展,提高了生产效率和产品质量,同时也提升了行业安全性和精准度。

这篇关于Baumer工业相机堡盟工业相机如何联合OpenHarmony框架开发连接USB相机(OpenHarmony)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951009

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧