自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QtHalcon

在计算机视觉路上努力前行

  • 博客(54)
  • 资源 (18)
  • 收藏
  • 关注

原创 Linux的core文件

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1)  使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。通过上面的命令修改后,一般都只是对当前会话起作用,当你下次重...

2018-11-29 22:33:18 243

原创 三十道linux内核面试题

  随笔 - 953, 文章 - 0, 评论 - 3, 引用 - 0三十道linux内核面试题     参考:https://www.cnblogs.com/alantu2018/p/8461068.html     ...

2018-11-29 18:48:42 1276 1

原创 为什么有时候Linux不打印输出信息

今天莫名奇妙不打印信息,找了半天原理是,Linux的缓冲区问题由于Linux的输出有缓冲区,也就是说Printf打印的信息不是马上输出到屏幕上,而是先输入到缓存中,等缓存区满了后才会输出怎样解决:不要每次只输出一个字符,就算只输出一个字符,在后面也要加上一个换行符 用fflush函数进行冲洗缓存区           ...

2018-11-29 13:38:28 3149

原创 c++ 智能指针

https://www.cnblogs.com/TenosDoIt/p/3456704.htmlhttps://blog.csdn.net/tanswer_/article/details/79039617        

2018-11-28 18:27:01 212

原创 GNU C的特色:__attribute__机制

https://blog.csdn.net/JuanA1/article/details/6849120 https://blog.csdn.net/fantasy_wxe/article/details/8066551?utm_source=blogxgwz7http://www.unixwiz.net/techtips/gnu-c-attributes.htmlhttps://...

2018-11-27 22:15:25 227

原创 malloc带来的一些问题

一:#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>void get_memory(char *p){ p = (char *)malloc(100); if(p == NULL){ printf("aaaaaaaaaaa\...

2018-11-27 10:52:58 404

原创 排序算法(八):桶排序/基数排序(Radix Sort)

说基数排序之前,我们先说桶排序:基本思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。          简单来说,就是把数据分组,放在一个个的桶中,...

2018-11-26 19:01:07 652

原创 排序算法(七):归并排序(Merge Sort)

基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序示例:  合并方法:设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为n-i +1、n-m。j=m+1;k=i;i=i; //置两个子表的起始下标及辅助数组的...

2018-11-26 18:46:44 382 1

原创 排序算法(六):快速排序(Quick Sort)

基本思想:1)选择一个基准元素,通常选择第一个元素或者最后一个元素,2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。3)此时基准元素在其排好序后的正确位置4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。快速排序的示例:   算法的实现: 递归实现:#i...

2018-11-26 13:40:19 467

原创 排序算法(五):冒泡排序(Bubble Sort)

基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序的示例:算法的实现:public void bubbleSort(int[] a) { for(int i = a.length - 1; i >...

2018-11-26 10:58:33 944

原创 排序算法(四):堆排序(Heap Sort)

堆排序是一种树形选择排序,是对直接选择排序的有效改进。基本思想:堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如:(a)大顶堆序列:...

2018-11-26 10:18:56 340

原创 排序算法(三):简单选择排序(Simple Selection Sort)

基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。简单选择排序的示例:操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录...

2018-11-26 09:55:53 687

原创 error: stray ‘\200’ in program解决

gcc编译错误现象:b.cpp:20:1: error: stray ‘\343’ in program    //寻找最小值的下标 ^b.cpp:20:1: error: stray ‘\200’ in programb.cpp:20:1: error: stray ‘\200’ in programb.cpp:20:1: error: stray ‘\343’ in progr...

2018-11-26 09:22:09 4052 1

原创 九大排序算法

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;十大经典排序算法(动图演...

2018-11-25 22:38:11 2808

原创 排序算法(二):希尔排序

希尔排序是1959 年由D.L.Shell 提出来的,相对直接插入排序有较大的改进。希尔排序又叫缩小增量排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。操作方法:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;    按增量序列个数k,对序列进行k 趟排序; ...

2018-11-25 22:29:44 370

原创 排序算法(一):直接插入排序

1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入...

2018-11-25 22:26:11 461

原创 调试技巧(三):strace

在Linux系统中, strace是一种相当有效的跟踪工具,它的主要特点是可以被用来监视系统调用。我们不仅可以用strace调试一个新开始的程序,也可以调试一个已经在运行的程序(这意味着把strace绑定到一个已有的PID上)。对于globalmem字符设备文件,以strace方式运行如代码所示的用户空间应用程序globalmem_test,运行的结果如下: root@ubuntu:/us...

2018-11-25 18:48:37 8543

原创 调试技巧(二):BUG_ON(), WARN_ON()和panic()

内核中有许多地方调用类似BUG()的语句,它非常像一个内核运行时的断言,意味着本来不该执行到BUG()这条语句,一旦执行即抛出Oops。 BUG()的定义为:#define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ panic("BUG!"); \} whi...

2018-11-25 18:25:20 3438

原创 调试技巧(一):OOPS调试

当内核出现类似用户空间的Segmentation Fault时(例如内核访问一个并不存在的虚拟地址), Oops会被打印到控制台和写入内核log缓冲区。我们在globalmem.c的globalmem_read()函数中加上下面一行代码 } else { *ppos += count; ret = count; *(unsigned int *)0 = 1; /*...

2018-11-25 17:11:48 1629

转载 为什么中断处理函数中不能出现阻塞

1、 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断,如果在中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没有一个task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了会导...

2018-11-25 15:43:48 3466

转载 时间复杂度和空间复杂度

时间复杂度 首先我们先来说时间效率的这个问题,这里的时间效率就是指的算法的执行时间,时间的快慢本来就是一个相对的概念,那么到了算法上,我们该用怎样的度量指标去度量一个算法的时间效率(执行时间)呢? 刚开始我们想出了一种事后统计方法,我称它为「马后炮式」,顾名思义,就是对于要解决的某个问题,费尽心思想了 n 种解法,提前写好算法程序,然后攒了一堆数据,让它们分别在电脑上跑,跑完了然后...

2018-11-25 09:32:11 171

原创 冒泡排序的优化

普通的冒泡排序就是这样:public void bubbleSort(int[] a) { for(int i = a.length - 1; i > 0; i--) { for(int j = 0; j < i; j++) { if(a[j] > a[j+1]) //交换,具体实现略 ...

2018-11-25 08:42:34 218

原创 1 QT简介

1,简介QT是什么?它能做什么?Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。QT学习需要避免的坑QT分为4.0版本和5.0版本他们之间的差别很大,不通用!!!不通用!!!不通用!!!所以要...

2018-11-23 13:33:25 2336

原创 ELF格式文件

Executable and Linkable Format (可执行与可链接格式 )常用扩展名o,so,elf,prx一、概述1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序。ELF文件(目标文件)格式主要三种:可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或...

2018-11-22 13:40:17 379

原创 图片播放器(十):事件处理函数

 因为从触摸屏传过来的事件需要另外处理,因此需要分离出一个事件处理层。系统核心函数:int main(){ int ret = 0; char event; DEBUG("hello world\n"); ret = fb_open(); if(ret < 0){ DERROR("open fb fail\n"); } fb_draw_back(BLAC...

2018-11-21 18:45:48 191

原创 图片播放器(八):读取文件夹中的图片

采用链表的方式保存图片文件的格式信息,文件名和大小。  重要结构体:/* 图片文件类型 */typedef enum image_type{ IMAGE_TYPE_BMP, IMAGE_TYPE_JPG, IMAGE_TYPE_PNG, IMAGE_TPPE_UNKNOWN, /* 不能识别 */}image_type_e;/* 图片文件信息 */type...

2018-11-21 18:37:20 761

原创 图片播放器(九):触摸屏处理

input事件解析:#####################    type = 3 code = 0 value = 724    //读取的X坐标的值                                              type = 3 code = 1 value = 328   //读取的Y坐标的值                              ...

2018-11-21 08:45:57 294

原创 图片播放器(七):PNG图片的显示函数

1.思路分析(1)png更像是jpg而不像是bmp(2)png和jpg都是压缩格式的图片,都是二进制文件,不同之处是压缩和解压缩的算法不同。(3)通过libjpeg来编解码jpg图片,那么同样有一个libpng用来编解码png图片。(4)工作思路和顺序:找到并移植并部署libpng,然后查readme和其他文档示例代码等来使用libpng提供的API来对png图片进行解码,并将解码出来的...

2018-11-18 18:45:27 767

原创 Error记录--make: ./libtool:命令未找到

报错信息:./libtool --mode=compile arm-linux-gcc -O2 -I. -c ./jcapimin.cmake: ./libtool:命令未找到在编译jpeg源代码的时候遇到了这个问题,原因是libtool未安装。安装libtool步骤:找一个文件夹:第一步:下载安装包wget http://ftp.gnu.org/gnu/libtool/libto...

2018-11-17 21:09:43 1125

原创 Linux 查看CPU信息,机器型号,内存等信息

系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -t...

2018-11-17 19:15:03 146

原创 图片播放器(六):JPG图片的显示函数

1.libjpeg介绍及开源库的使用方法1.1.libjpeg介绍(1)基于linux的开源软件(2)C语言编写(gcc、Makefile管理)(3)提供JPEG图片的编解码算法实现1.2.libjpeg版本及下载资源(1)经典版本v6b:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/(2)最新版本v9b:h...

2018-11-17 18:31:19 702

原创 图片播放器(五):BMP图片的显示函数

BMP格式的图片的介绍,和头信息的解析:https://www.cnblogs.com/l2rf/p/5643352.html 重要结构体:从BMP文件中读到的头信息:(这些信息只是取了部分信息)/* bmp 头信息 */struct bmp_head_data{ unsigned short w; /* 图片宽 */ unsigned short h; /* 图...

2018-11-16 21:07:00 1267

原创 图片播放器(四):图片显示的核心函数

display###############    fb.c                                         //fb文件    Makefileinclude###############    fb.hstart.c                                                //最开始的文件Makefil...

2018-11-15 20:21:14 291

原创 图片播放器(三):图片显示原理

1.图片显示原理(1)概念1:像素(2)概念2:点阵(3)分辨率(物理分辨率、显示分辨率)(4)清晰度(分辨率和像素间距有关)像素间距相同时,分辨率越大越清晰;分辨率相同时,像素间距越小越清晰。(4)bpp(RGB565、RGB888)像素深度,每个像素用多少bit数据表示(5)颜色序(RGB、BGR)2.图片点阵数据获取(1)Image2LCD软件提取(2)通过图片/视频文...

2018-11-15 20:11:59 770

原创 图片播放器(二):framebuffer基本操作代码

display###############    fb.c                                         //fb文件    Makefileinclude###############    fb.hstart.c                                                //最开始的文件Makefile...

2018-11-15 17:49:48 725

原创 图片播放器(一):Makefile

顶层Makefile解析(随工程而变):CROSS_COMPILE = #指定编译器种类AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ld #链接工具CC = $(CROSS_COMPILE)gcc #编译工具CPP ...

2018-11-15 15:20:16 259

原创 gets需要用getchar吃掉换行符

当我们先输入一个整型类的数后,再用gets输入一个字符串,在这之间会出现问题。#include"stdio.h"int main(){ char a[1000]; int n; scanf("%d",&n); printf("接收\n"); gets(a); printf("输出:%s\n", a); ...

2018-11-14 09:05:59 4127

原创 复制一段字符串作为程序输入的BUG

有时候我们会通过从其他地方复制一段字符串(里面有多行语句)作为程序的输入,这时换行符会出出现一些问题。比如下面的程序:#include <stdio.h>#include <string.h>#define N 100int main(){ char input_1[N] = {0}; char input_2[N] = {0}; printf...

2018-11-14 08:17:40 214

原创 DMA

DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。 DMA通常与硬件体系结构,特别是外设的总线技术密切相关。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间, CPU可以并发地执行其他任务。当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,然后由CP...

2018-11-13 15:39:41 1007

原创 设备I/O端口和I/O内存的访问

设备通常会提供一组寄存器来控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄器可能位于I/O空间中,也可能位于内存空间中。当位于I/O空间时,通常被称为I/O端口;当位于内存空间时,对应的内存空间被称为I/O内存。每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式...

2018-11-13 11:03:26 3586

PaddleOCR2.7+Qt5

PaddleOCR2.7+Qt5,字符识别,GPU

2024-05-29

opencv编译需要的.cash包

opencv ffmpeg ippicv wechat_qrcode的依赖包

2023-12-23

光度立体技术字符识别和缺陷检测

在工业领域,表面检测是一个非常广泛的应用领域。在halcon中,使用增强的光度立体视觉方法,三维表面检测被加强。利用阴影可方便快速的检测物体表面的缺口或凹痕。 使用光度立体视觉方法可在复杂图像中轻松找到表面缺陷 。

2022-07-30

QT6源码编译所需要的工具

现在QT在线安装只有QT6.2以上的版本和QT5.15,其他版本就需要自己编译,本文讲解在vs2019环境下编译qt6.1.3源码。

2022-06-18

PCL1.12+VTK9.1+QT6编译部署

PCL1.12+VTK9.1+QT6编译部署

2022-06-10

QT6+CloudCompare显示3D点云

CloudCompare是一个三维点云(网格)编辑和处理软件。最初,它被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能。此外,由于大多数点云都是由地面激光扫描仪采集的,CloudCompare的目的是在一台标准笔记本电脑上处理大规模的点云——通常超过1000万个点云。在2005年后,cloudcompare就实现了点云和三角形网格之间的比较。随后,许多其他点云处理算法(配准、重采样、颜色/法线向量/尺度、统计计算、传感器管理、交互式或自动分割等)以及显示增强工具(自定义颜色渐变、颜色和法向量处理,校准图像处理、OpenGL着色器、插件等)

2022-04-27

Test12_16.zip

Test12_16.zip

2021-12-16

yolotest.zip

车辆检测

2021-10-22

halcon二维码识别.zip

基于dym做一个二维码识别的软件

2021-10-05

libtest.zip

把C++当脚本写,基于QT6,适合做一些比较复杂的脚本

2021-09-14

OCR_Demo3.zip

最近在学习PaddlePaddle开源算法平台,发现PaddlePaddle里面的PaddleOCR可以应用到很多场景,识别率很高,而且兼容很多平台。本文建讲解一下PaddleOCR安装部署和让QT使用PaddleOCR。

2021-09-04

Qt开发MQTT测试源码

Qt开发MQTT,测试源码,QMQTT,外加一个辅助测试软件

2021-06-22

logtest.zip

使用Log4Qt构建自己的日志系统,同时重定向到窗口显示。

2021-05-23

QtPluginDemo.zip

一个大型的软件,架构相当复杂,如果有新的开发工程师进入团队,并参与到软件的功能扩展中,如果没有插件,那整个系统需要应该新功能而重新重新,并且新成员熟悉整个软件系统的成本也非常高

2021-03-21

Qt6SerialPort.zip

在QT6中实现串口模块Qt6SerialPort,文章链接https://blog.csdn.net/qq_40732350/article/details/113634422

2021-02-04

Qt实现二维码的编解码

Qt实现二维码的编解码,能够通过字符串生成二维码,qrcode库和QZXing库,博客地址https://blog.csdn.net/qq_40732350/article/details/109550957

2020-11-07

halcon19可用dll.zip

HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了软件开发周期——HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。在欧洲以及日本的工业界已经是公认具有最佳效能的Machine Vision软件。

2020-08-03

qthalcon3d.zip

QT+Halcon的资料很少,而3D资料就更少下面是我实现的QT+Halcon3D图像显示 QT+Halcon的资料很少,而3D资料就更少下面是我实现的QT+Halcon3D图像显示

2020-07-04

draw_qwidget.zip

由于项目要涉及芯片检测的功能,需要选择特定区域,所以制作了个区域选择框,在QWidget上绘制区域框,可以放大缩小移动,可以是矩形,也可以是椭圆,注释非常完整。 需要详细介绍的可以参考我的博客https://blog.csdn.net/qq_40732350/article/details/103538593

2019-12-14

Linux基本用到的函数

本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响 力俱佳,旨在打造简单易学且实用性强的轻量级 Linux 入门教程。

2018-09-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除