上位机图像处理和嵌入式模块部署(qmacvisual非opencv算法编写)

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

        我们都知道,qmacvisual本身依赖于qt+opencv的实现。大部分的界面都是依赖于qt的实现。图像算法部分,也是大部分都依赖于opencv本身。但是,也有很多的算法,本身opencv是没有实现的,或者opencv的实现不满足我们的需求。这个时候,就需要我们自己利用cv::Mat结构来对像素进行一个一个的处理。今天,我们可以借着学习图像细化的机会,来看看怎么编写非opencv算法。

1、创建项目和创建流程

        首先,还是根据qmacvisual的要求去创建项目和创建流程。

2、导入图像细化控件

        图像细化控件的位置,在图像处理下面。用户可以直接用鼠标拖拉过来,如果不出意外,我们就可以看到这样的窗口,

        图像中有两个地方需要配置,一个是输入的图像,一个是需要迭代的次数。我们看到,迭代之后的结果就是这样的一个细长的线条。大家可以想象下,它之前的图象是什么样的,

        大家可以通过对比发现,整个图像细化的效果还是比较明显的。

3、完善测试流程

        一般测试的时候,会添加一个图像显示的插件,这样流程比较完整一点。所以,最后整体的流程是这样的,

4、分析图像实现的实现

        如果只是简单地分析功能,整个图像处理的流程还是比较简单的。我们比较关注的,更多的是整个功能怎么实现的。前面说过,它的算法是通过具体像素操作实现的,而不是opencv自带的算法。所以,在对应的实现函数中看到了这样的代码。

        访问单个元素的话,可以这样来访问,即通过i和j,

cv::Mat dst;
dst.at<uchar>(i, j) = 0;

        代码中dst是cv::Mat结构。这种方法看上去没有什么问题,但是如果连续访问的话,效率比较低。因此,还有一种方法,就是通过首地址,即先访问一个元素的地址,后续通过这个地址来访问其他的像素。

cv::Mat tmpimg;
uchar* img = tmpimg.data;

5,另外一种需要自定义算法的情形

        如果opencv中没有相关的算法,这个时候用c/c++语言来实现,无可厚非。但是还有一种也是比较常见的,那就是opencv本身已经实现了相关的算法,但是我们用c/c++还要实现一遍。甚至很多的时候,还用汇编改写一遍。这里面最大的考虑就是效率。因为opencv里面的算法,主要是基于c/c++高级语言来完成的,它没有办法考虑不同硬件平台的差异。这个时候,为了提高算法的运行效率,最大化使用硬件的性能,改写opencv已有的算法也是常有的事情。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 01:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 01:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 01:20:03       82 阅读
  4. Python语言-面向对象

    2024-03-30 01:20:03       91 阅读

热门阅读

  1. js中遍历数组,map方法和reduce方法有什么区别?

    2024-03-30 01:20:03       38 阅读
  2. 为什么编码器-解码器结构能够保存空间信息

    2024-03-30 01:20:03       40 阅读
  3. <个人笔记>位运算

    2024-03-30 01:20:03       39 阅读
  4. Frida相关脚本代码样例(Windows下经过测试)

    2024-03-30 01:20:03       45 阅读
  5. 前端通用命名规范和Vue项目命名规范

    2024-03-30 01:20:03       41 阅读
  6. GIT使用小结

    2024-03-30 01:20:03       38 阅读
  7. 面试宝典:PHP中的Yac技术深度分析

    2024-03-30 01:20:03       42 阅读
  8. 什么是FLV

    2024-03-30 01:20:03       39 阅读
  9. 正则表达式

    2024-03-30 01:20:03       36 阅读
  10. 正则匹配/正则表达式

    2024-03-30 01:20:03       52 阅读
  11. Rust引用借用 vs 原始指针

    2024-03-30 01:20:03       37 阅读
  12. 库函数的模拟实现

    2024-03-30 01:20:03       42 阅读