上位机图像处理和嵌入式模块部署(借鉴与学习)

news2024/11/28 18:57:31

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        对于很多学院派的同学来说,他们对市场的感觉一般是比较弱的。如果写一个软件的话,或者说开发一个项目的话,他们很喜欢从头开始做。或者说,把大部分的精力放在算法的研究上面,而对设备对接、稳定性、性能、脚本、以及软件的易用性方面,并不是那么地上心。即使是自己不想重复写的代码,也仅仅是调用一下opencv的api,而是不是去进一步地优化、改进,榨取硬件所有地算力和性能,降低整体的部署成本,这些都是非常不足取地。

        今天,趁着学习和开发的机会,我们自己来简单总结下,应该如何借鉴别人的产品和软件,来提高自己的能力。

1、借鉴halcon产品

        市场上大部分产品都是使用c# & halcon来开发的,少部分是自己用qt & opencv开发的。这部分软件部署在各个行业,面大量广。所以,对于halcon提供了哪些功能,客户最喜欢哪些功能,自己如果开发,差距在什么地方,这些最好都要了解清楚比较好。之前大部分使用halcon正版软件的客户,一般对价格都不是很敏感。但是现在一般都追求降本增效,那这一部分客户是不是就是新的机会?

2、借鉴国内同行的产品

        除了halcon、vision pro这一类商业软件之外,另外国内也有一些同行开发了机器视觉的软件。大的有vision master,小的则是各家公司自己的产品,很多试用版本都可以在网站上面下载到。其中的一些软件,在使用上面还是有自己特色的,下载下来试用一下,往往都会有意外的收获。

3、电商网站购买代码

        目前在电商网站上面,很多的机器视觉软件代码都是可以买到的,价格也不是很贵。这中间的价格从几十到几百不等。相比较于软件自身的价值,付出的费用几乎不值一提,只要软件可以编译通过、可以正常使用起来就行。比如我们之前谈到的qmacvisual,本身是作者在某论坛上面出售的软件,后来因为其他的原因,慢慢地在一些电商网站上面也出现了类似的源代码出售。

        当然这些代码,因为本身价格并不是很高,所以如果指望商家替你编译、替你安装,甚至替你调试,那基本是想多了。所以,选择购买代码的同学,一定要自己有一定的开发能力,比如了解c#、了解c++、了解qt、了解通用图像算法原理,不然的话,就算购买了代码,基本上也学不到什么。

4、客户

        相比较技术而言,客户往往是我们学习最重要的老师。因为他们是最终的消费者,也更知道自己的问题是什么,或者说希望采购机器视觉软件来帮助自己解决哪一方面的问题。这些需求,或者潜在的应用场景,很多时候并不是通过一两次拜访就能知道的,必须自己对行业、对生产有一定清楚的认知之后,才能去发掘和应用的。做技术的同学,尤其要在产品和客户需求方面狠下功夫,因为这是所有商业的出发点和落脚点。

5、优化自己的商业模式

        就像大家目前看到的一样,如果是纯上位机开发、纯项目开发,这中间有很多的弊端。比如说,上位机很容易被逆向,再比如说项目一般都有很多的定制功能,很多开发的内容如果无法被复用,这中间就会形成很大的沉没成本。所以在了解到这些缺点之后,我们自己有必要反思一下,是不是可以做软硬件一体的产品,是不是需要增加上位机脚本定制的功能,是不是可以集中精力做一些刚需的产品,甚至于说针对特定行业做一些标准的产品,而不是一上来就追求大而全,完全不考虑个人的生存以及企业的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1448203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++关联式容器】unordered_map

目录 unordered_map 1. pair类型 2. 关联式容器额外的类型别名 3. 哈希桶 4. 无序容器对关键字类型的要求 5. Member functions 5.1 constructor、destructor、operator 5.1.1 constructor 5.1.2 destructor 5.1.3 operator 5.2 Capacity ​5.2.1 empty 5.2.2 si…

C/C++内存管理:new、delete功能及原理实现

目录 一、C/C内存分布 二、C中内存管理方式 2.1new/delete操作内置类型 2.2 new和delete操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 4.1内置类型 4.2自定义类型 五、定位new 一、C/C内存分布 int globalVar 1; static int sta…

Java学习第十三节之三种初始化和内存分析

三种初始化 package array;public class ArrayDemo02 {public static void main(String[] args) {//静态初始化&#xff1b;创建赋值int[] a {1, 2, 3, 4, 5, 6, 7, 8};System.out.println(a[0]);for (int i 0; i <a.length; i) {System.out.println(a[i]);}//动态初始化…

你的电脑关机吗

目录 程序员为什么不喜欢关电脑&#xff1f; 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑&#xff1f; 大部分人都会选择将电脑进行关机操作。其实这不难理解&#xff0c;毕竟人类都需要…

Qt初使用(使用Qt创建项目,在创建的项目中添加类,Qt中输出内容到控制台,设置窗口大小和窗口标题,Qt查看说明文档)

目录 一.创建带模板的项目新建项目运行在文件中查看该项目文件 二.在创建好的项目中添加类三.创建空项目&#xff08;不使用自带的模板&#xff09;四.Qt中输出内容到控制台五.设置窗口大小 , 窗口标题 ,固定窗口大小QWidget组件的说明 六.Pro文件帮助文档 按windows键&#xf…

1_opencv3环境搭建与测试

之前2020年5月写过一次&#xff0c;时隔3年多&#xff0c;有机会再重新写一次。相比之前&#xff0c;应该是有一点儿进步的。之前是使用默认安装路径&#xff0c;所以无需配置共享库的搜索路径。这次是自定义安装路径&#xff0c;略有区别。随着写程序的时间增长&#xff0c;编…

LeetCode Python - 14.最长公共前缀

目录 题目答案运行结果 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff…

react 【二】 setState/react性能优化/dom操作

文章目录 1、setState1.1 setState的三种用法1.2 setState为什么是异步 2、React性能优化2.1 react的更新机制2.2 如何优化性能2.2.1 shouldComponentUpdate2.2.2 PureComponent2.2.3 memo 3、不可变数据的力量4、dom操作4.1 通过ref获取dom的三种方式4.2 执行子组件的方法&…

关于node与node-sass那些事

昨晚找了之前的一个项目想要复习下&#xff0c;结果npm i报错&#xff0c;大致意思就是noda-sass的版本和node的对不上&#xff0c;那怎么办呢&#xff1a; 1.换node版本&#xff0c;那好吧&#xff0c;首先要明白&#xff0c;对应的版本关系 2.然后我开始用nvm换node版本&am…

猫头虎分享: 探索软件系统架构的革新之路

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【AI视野·今日Sound 声学论文速览 第四十九期】Wed, 17 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 17 Jan 2024 Totally 23 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers From Coarse to Fine: Efficient Training for Audio Spectrogram Transformers Authors Jiu Feng, Mehmet Hamza Erol, Joon Son Chung,…

[FFmpeg学习]从视频中获取图片

从视频中获取图片是一个比较直观的例子&#xff0c;这里从一个基础的例子来查看FFmpeg相关api的使用&#xff0c;从mp4文件中获取一帧图像&#xff0c;保存为jpeg格式图片&#xff0c;mp4文件比较好准备&#xff0c;一般手机录屏文件就是mp4格式。 原理还是比较清楚&#xff0…

六、Redis之数据持久化及高频面试题

6.1 数据持久化 官网文档地址&#xff1a;https://redis.io/docs/manual/persistence/ Redis提供了主要提供了 2 种不同形式的持久化方式&#xff1a; RDB&#xff08;Redis数据库&#xff09;&#xff1a;RDB 持久性以指定的时间间隔执行数据集的时间点快照。AOF&#xff0…

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全)

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖…

LLVM的中间表示

概括 选择编译器IR的决策很重要&#xff0c;它决定了优化过程将拥有多少信息来使代码运行得更快。 一方面非常高层级的IR允许优化器轻松地提取原始源代码的相关信息。 另一方面&#xff0c;低层的IR更加贴近目标机器&#xff0c;这样编译器更容易为特定的硬件生成相应的代码…

MyBatis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、模糊查询 like 语句该怎么写?二、如何获取自动生成的(主)键值三、在 mapper 中如何传递多个参数?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

Golang中的fmt包:格式化输入输出的利器

Golang中的fmt包&#xff1a;格式化输入输出的利器 在软件开发的世界里&#xff0c;fmt包就像是一位忠实的伙伴&#xff0c;始终陪伴着开发人员。它简化了格式化输入输出的过程&#xff0c;让打印和扫描数据变得轻松自如。无论是向控制台输出简单的消息&#xff0c;还是处理复杂…

零基础学Python(10)— 序列通用操作

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就带大家认识下Python语言中常见的序列通用操作&#xff01;~&#x1f308; 目录 &#x1f680;1.索引 &#x1f680;2.切片 &#x1f680;3.序列加法 &#x1f680;4.序列乘法 &#x1f680;5.检查某个元素是…

React18原理: 时间分片技术选择

渲染1w个节点的不同方式 1 &#xff09;案例1&#xff1a;一次渲染1w个节点 <div idroot><div><script type"text/javascript">function randomHexColor() {return "#" ("0000" (Math.random() * 0x1000000 << 0).toS…

在Docker中安装ubuntu镜像并安装Vim,将镜像命名

1、运行环境&#xff0c;腾讯云Ubuntu Server 22.04 LTS 64bit。默认用户名ubuntu&#xff0c;密码自己设置的啥写啥呗。 2、在docker中安装。 sudo docker pull ubuntu 3、查看docker中的镜像。 sudo docker images 4、 以交互模式进入容器。 sudo docker run -it ubuntu…