自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 QT和OpenCV混合使用显示图片

在这里先祝各位小伙伴端午节快乐,因工作需要,须使用QT+OpenCV处理显示图片,期间踩了一些坑、总结了一些经验,今天做下总结,希望可以帮助更多小伙伴,废话不多少,开搞。一、新建QT工程需要带窗口工程二、添加路径和库文件在xxx.pro里面添加支持INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv \ /usr/local/include/opencv2LIBS += /us

2020-06-25 22:48:35 1758

原创 移动硬盘安装ubuntu16.04

之前在移动硬盘上成功安装过ubuntu系统,但是因为时间久远、没做笔记,安装步骤给忘记了,踩了很多坑(搞技术的小伙伴们一定要养成做笔记的习惯)。经过多次安装,总结了以下安装方法,步骤比较详细、分区相对合理,希望可以帮助更多的小伙伴。一、制作u盘启动盘1、制作前准备1、下载ubuntu 16.04镜像,官网可下,本人下载的是 ubuntu-16.04-desktop-amd64.iso。2、下载 Universal-USB-Installer制作u盘启动盘,我之前使用的是refus,安装的系统启动不了

2020-06-22 21:48:25 3348

转载 string容器

一、字符串构造string();//创建一个空的字符串 例如: string strstring(const string& str);//使用一个string对象初始化另一个string对象string(const char* s);//使用字符串s初始化string(int n, char c);//使用n个字符c初始化string s1;string s2(s1);string s3(“hello world!”);string s4(10 , ‘a’);二、string赋值

2020-06-20 00:21:47 308

原创 两数相加

思路:1、定义一个临时变量,遍历两个链表,把当前节点的和保存在链表中。2、定义一个临时变量保存进制数。3、把相加的和取余数保存在新的链表中。做题步骤:1、拿到代码先判断链表是否为空2、定义新的链表指向原始链表的表头,尽量不要破坏掉原始链表结构。3、定义新链表用来存储相加信息。4、循环遍历,相加,取余入链表。ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if(l1 == NULL || l2 == NULL) .

2020-06-18 20:23:48 178

原创 vector容器

1、vector容器的基本概念动态数组,随着元素的加入,它的内部机制会自动的扩充空间用以容纳新的元素。迭代器失效:可能会导致内存重新分配,迭代器会失效,程序断掉。vector的空间配置策略:客户每增加一个元素,vector自动增加大于一个元素的空间。2、vetor迭代器数组的迭代器可以用普通的指针实现,提高效率 ,普通指针都可以作为vector的迭代器而满足所必要的条件 。遍历:每个元素都走一遍注意动态数组开空间并不是在原来的空间上续接新的空间,而是重新开辟一个新的空间把就空间的数据拷.

2020-06-16 10:29:57 174

原创 map容器

1、概念1、所有的元素都会根据元素的键值自动排序。2、map的所有元素都是pair,同时用于实值和键值。3、pair的第一元素被视为键值,第二元素被视为实值。4、不可以通过map的迭代器改变map的内容,任意改变map元素键值都将会严重破坏map组织。5、可以修正元素的实值。6、map拥有和list相同的某些性质,执行元素新增或者删除,它的迭代器依然有效,但是被删除那个元素的迭代器除外。7、以红黑树为底层机制2、map容器使用(1)、创建map容器//创建map容器map myma

2020-06-15 23:08:19 272

原创 两数之和

https://leetcode-cn.com/problems/two-sum/1、暴力法遍历两次数组,相加和目标数比较,如果和目标数一致则返回下标,否则返回空。时间复杂度:O(n^2)空间复杂度:O(1)vector<int> twoSum(vector<int>& nums, int target){ for (int i = 0; i < nums.size(); ++i) { for (int j = i + 1; j < num

2020-06-15 22:52:07 310

原创 Opencl四大模型

opencl四大模型一、平台模型描述了协同执行的单个处理器(宿主机)及其一个或者多个能执行Opencl代码的处理器(设备)。它定义了一个抽象的硬件模型,供编程人员用于编写能够在设备上执行Opencl C函数(kernel)。Opencl使用一种InstallableClient Drive 模型,这样不同厂商的平台就能够在系统中共存,现在的Opencl drive模型不允许不同厂商的GPU同...

2020-06-15 22:03:21 729

原创 # Opencl介绍

1、什么是openclOpenCL是面向由CPU、GPU和其他处理器组合构成的计算机进行编程的行业标准框架.2、多核的未来,异构平台cpu中门切换消耗的能量为电容©乘以电压(V)的平方.这些门在1秒内切换的次数等于频率.一个微处理器的功耗计算为P=C V^2 f.在执行指令一样的情况下,双核处理器中的功耗是单核处理器的0.396倍.低频率运行的多核在功耗效能上会显著提高.移动设备非常依...

2019-07-08 22:05:35 927

原创 opencl编程指南

第一章 Opencl介绍1、什么是openclOpenCL是面向由CPU、GPU和其他处理器组合构成的计算机进行编程的行业标准框架.2、多核的未来,异构平台cpu中门切换消耗的能量为电容©乘以电压(V)的平方.这些门在1秒内切换的次数等于频率.一个微处理器的功耗计算为P=C V^2 f.在执行指令一样的情况下,双核处理器中的功耗是单核处理器的0.396倍.低频率运行的多核在功耗效能上会...

2019-07-08 22:02:15 1788

转载 BMP文件图片

一、简介1、采用位映射存储格式,除了图像深度可以选择之外,不采用其他任何压缩,因此BMP文件所占用的空间是很大的。2、BMP文件的图像的深度可以选择1bit、4bit、8bit以及24bit。3、BMP文件存储数据的时候,图像的扫描方式按照从左到右、从下到上的顺序。二、格式组成典型的BMP图像文件有文件头、位图信息头、颜色信息头和图形数据四部分组成:1、位图头文件数据结构,他包好BMP...

2019-06-06 14:45:54 560

转载 CPU和GPU的架构差异

一、概念1、CPU(Central Processing Unit-中央处理器),是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。2、GPU(Graphics Processing Unit-图形处理器),是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上...

2019-05-27 21:13:31 4153

原创 异构计算与Opencl标准

一、异构计算一、体系结构的技术演进单核时代,多核时代,异构时代二、什么是异构计算系统WiKiPedia上异构计算系统的定义:异构计算系统是将一些列拥有不同指令集的计算单元整合在一起,共同执行一个应用程序的系统。典型的计算单元包括:通用处理器,例如x86多核CPU专用处理器,例如GPU,DSP,FPGA,ASICFPGA(Field-Programmable Gate Arra...

2019-05-27 21:02:09 958

原创 OpenCL程序开发所用到的资源

AMD OpenCL开发环境要求:操作系统:WIN7及 以上,linux支持的硬件:APU,dGPU,CPUOpenCL开发所需资源可以访问 http://developer.amd.com包括SDK、驱动、工具和文档OpenCL标准可以访问http://www.khronos.org/opencl/OpenCL标准细节、API定义论坛及交流平台:http://devgurus...

2019-05-27 20:55:31 264

原创 Host代码步骤

1、获取平台ID2、获取设备ID3、创建context4、创建命令队列5、创建程序6、创建Buffer7、创建kernel8、设置参数9、调用kernel10、读取结果11、释放资源...

2019-05-27 20:54:56 783

原创 程序、进程、线程之间的联系和区别

一、进程进程是程序执行的实例,即运行中的程序,也是程序的副本;程序放置于磁盘中,而进程放置于内存中;进程的启动及调度均是由内核发起的。init是所有进程的子进程,儿子进程是由fork()进程生成。1、概念从用户的角度来说,进程就是程序的一次动态执行过程。从操作系统角度:操作系统分配内存,CPU时间等系统资源的基本单位。2、特点(1)、每一个进程都有自己独立的虚拟地址空间和进程状态。...

2019-05-27 16:34:05 7705

原创 编写kernel

1、kernel以关键字__kernel开始,返回类型必须为void。2、像c函数一样要求必须制定指针所指向的地址空间。3、buffer可以声明为全局内存或者常量内存。4、image被分配到全局内存,可以选择性的访问限定符( _ _read_only , _ _write_only , 以及 __read_write).5、__local限定符用来声明一段内存,供workgro...

2019-05-27 10:02:42 515

原创 内存模型

1、在一般情况下,计算机平台之间的内存子系统差异巨、大,比如,所有现代CPU都支持自动缓存,不过许多GPU并不支持。2、为了支持代码的可移植性,Opencl采用的方法是定义一个抽象的内存模型,编程人员可以根据该模型编写代码,厂商可以映射到他们自己实际的内存硬件。3、全局内存对设备上所有计算单位都是可见的,每次从主机端到设备端传输的数据都将驻留在全局内存中,从设备端传输到主机端的任何数据,也是这...

2019-05-27 09:56:32 225

原创 新建Opencl程序对象

1、Opencl c代码(编写的代码在Opencl设备上执行)称为程序,是称为kernel的函数的集合,kernel是被调度安排到设备上运行的执行单元。2、Opencl程序运行时通过调用一系列API进行编译,编译系统针对具体的设备进行优化。3、Opencl应用程序能够同时移植到AMD、NVIDIA以及Intel的设备上,则不需要对这些平台分别进行预编译。4、Opencl软件仅连接到一个公共运...

2019-05-26 20:58:12 207

原创 flush命令和finish命令

1、clFinish()函数阻塞直到命令队列中的所有命令完成。2、clFlush()阻塞直到命令队列中的所有命令被移出队列,这意味这些命令已经准备就绪但是无法保证执行完毕。cl_int clFlush(cl_command_queue command_queue);cl_int clFinish(cl_command_queue command_queue);...

2019-05-26 20:49:49 2324

原创 内存对象

1、Opencl应用程序经常要处理大型数组或者多维矩阵。在能够开始执行之前,需要这些数据实际存在于设备之上。2、为了将数据传输到设备上,首先必须将其封装成内存对象。3、Opencl定义了两种不同的内存对象,buffer和image。4、任何时候,只要是新建的内存对象,它都只在一个上下文中有效。Opencl运行时根据依赖关系的需要来管理特定设备的数据传输。1.buffer1、类似于c语言中...

2019-05-26 20:47:17 273

原创 并发模型和并行编程模型

一、并发1、并发性考虑的是同时发生的两个或者两个以上的活动。2、并发处理有队列等候、唤醒、执行至少三个这样的步骤。3、并发是宏观概念,在微观上它们都是序列被处理的,只不过资源不会在某一个上面被阻塞,一般都是通过时间进行轮转,所以在宏观上看多个几乎同时到达的请求同时被处理。4、同一个时刻到达的请求也会根据优先级的不同,而后进入队列排队等候执行。5、并发的实质是一个物理CPU(也可以多个物理...

2019-05-24 14:15:48 946 1

原创 YUV基础知识

一、为什么要用YUV在计算机系统中,LCD显示的数据就是用RGB来表示每个像素的颜色,而且rgb表示的是一种彩色,但是在生活中有黑白电视和彩色电视两种,在录制节目的时候不可能用两种摄像机去录制节目吧,所以说为了兼容两种电视机,科学家们就引入了YUV格式来代替RGB,其中Y表示亮度,U和V表示色差。黑白电视机只用Y信号,彩色电视机可以由YUV转换成RGB在显示颜色。需要了解的是,YUV是由RGB...

2019-05-24 13:17:50 991

原创 图像基础知识:YUV和RGB

NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。视频网站这种分辨率的比较多,兼顾了清晰度和画质。YUV420planar数据,以720×488大小图象YUV420planar为例,其存储格式是共大小为(720×480×3>>1)字节,分为三个部分Y,U和V。RGB565是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节前三位是G,第二字节后5位是B。...

2019-05-23 09:59:22 5149 1

原创 图像单通道和三通道的解释

一、单通道俗称灰度图,每个像素点只能有一个值表示颜色,它的像素值在0到255之间,0是黑色,255表示白色,中间值是一些不同等级的灰色。(也有三通道灰度图,3通道灰度图只有一个通道有值,其他两个通道的值都是零)。二、三通道图每个像素点都有三个值表示,所以就是3通道。例如RGB图片即为三通道图片,RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们...

2019-05-23 08:32:41 8260 2

原创 第五章 彩色图像处理(彩色图像基础)

一、彩色图像基础1、光特性是颜色科学额核心2、描述彩色光的3个基本量1、辐射率:从光源流出能量的总量,用瓦特(W)度量。2、光强:观察者从光源接收的能量总和。3、亮度:主观描绘子。3、三原色原色相加可以产生二次色:...

2019-05-01 18:24:34 489

原创 第四章 频域滤波(频域滤波增强及其应用)

二、 频域滤波增强及其应用1、频域滤波增强原理空域图像增强----线性系统滤波空域滤波图像增强是一种基于线性系统的滤波技术,卷积定理是空域滤波的基础。频域图像增强2、频域滤波增强方法1、频域低通(平滑)滤波定义:以D0为半径的圆内所有频率分量无损的通过,圆外所有频率分量完全衰减。(1)、理想低通滤波器效果(2)、理想低通滤波器分析1、模糊(1)、87%能量高度...

2019-04-30 11:03:34 5578

原创 第四章 频域滤波(傅里叶变换频域显示特性)

一、傅里叶变换频域显示特性在光学傅里叶变换中,人们已经习惯变换域中 的低谱部分位于中央。频域频谱分布中间低、周围高的特性,有利于频谱的解析和进行各种计算与分析。1、图像中心化借助傅里叶变换的周期性和频率位移性质,可以对频域进行换位以使频谱分布呈现中间低频、四周高频。中心化后的结果直流部分 : 中心点对应图像的平均灰度值低频部分 :图像背景等灰度缓变部分。高频部分...

2019-04-29 23:38:48 2443

原创 第三章 空域滤波(高增益滤波器)

三 、高增益滤波器1、高增益滤波的原理弥补高通滤波器的缺陷,在增强边和细节的同时,不丢失原图像的低频成分。当A= 1时,高增益就是高通滤波器。当A >1时,原图像的一部分被加到高通中。2、滤波器扩大因子及模板系数设计对于3x3的模板,设w =9A - 1;(高通时 w =8),A的值决定了滤波器的特性。当 A =1.1时,意味着把0.1个原图像加到基本高通上。当A = ...

2019-04-29 20:59:05 2092

原创 第三章 空间滤波(平滑滤波器)

二、平滑滤波器1、平滑滤波器的主要用途1、对大图像处理前,删去无用的细小细节2、连接中断的线段和曲线3、降低噪音4、平滑处理,回复过分锐化的图像5、图像创艺(阴影、软边、朦胧效果)2、基本低通滤波器1、滤波器模板系数的设计根据空域中低通冲激响应函数的图像来设计模板的系数。2、均值滤波器待处理的像素点的值,等于其周围相邻像素的全体像素的平均值。2、加权平均滤波器待处理像素...

2019-04-29 20:26:39 2940

原创 第三章、空域滤波(空域滤波基础)

一、空域滤波基础1、理论基础线性系统响应:卷积理论1、卷积的离散表达式,基本上可以理解为模板地数学表达式2、卷积的冲击响应函数h(x,y),称为空域卷积模板。2、卷积输出 = 输入 * 系统比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来...

2019-04-29 20:24:18 3243

原创 第二章、数字图像处理的基本运算(直方图变换)

二、直方图变换1、直方图定义(1)一个灰度级在范围[0, L-1]的数字图像,其的直方图是一个离散函数。n 是图像的像素总数nk是像素中第k个灰度级的像素总数rk是第k个灰度级,k=0,1,2,…,L-1。2、图像直方图例3、图像直方图定义(2)一个灰度级别在范围[0, L-1]的数字图像的直方图是一个离散函数。4、两种图像直方图定义的比较1、使函数值正则化到[0 ,...

2019-04-29 20:11:58 4421

原创 第二章、数字图像处理的基本运算(基本运算)

一、基本运算1、点运算1、定义设输入图像的灰度为f(x,y),输出图像的灰度为g(x,y),则点运算可以表示为:g(x,y) = T[f(x,y)]T :灰度变换函数其中T[]是对f在(x,y)点值的一种数学运算,即点运算是一种像素的逐点运算,是灰度到灰度的映射过程,称T[]为灰度变换函数。点运算可以改变图像数据所占据的灰度值范围,从而改善图像显示效果。2、点运算的分类点运算...

2019-04-29 19:45:01 8147

原创 第一章 数字图像基础知识(人眼视觉特性)

人的视觉由认知、心理、文化等因素影响。狗看的世界是黑白世界。看到的不一定是真的。

2019-04-29 17:34:40 1253

原创 第一章 数字图像基础知识(图像的空间分辨率和幅度分辨率)

是每英寸图像内有多少个像素点,分辨率的单位为PPI(PixelsPerInch),通常叫做像素每英寸。每行像素(M)X每列像素数(N)X灰度值所占用位数(Bits)。采样频率越高空间分配率就越大。

2019-04-29 17:33:11 16089

原创 第一章 数字图像基础知识(图像采样与量化)

若采样结果每行(即横向)像素为M个,每列(即纵向)像素为N个,则整幅图像的大小为MxN个像素。.采样就是把在时间上和空间上连续的图像转换成为离散的采样点(像素)集的一种操作。.一般来讲,一幅图片的细节越多,则抽样图片的间隔就要越小。将坐标值数字化称为取样,将幅值数字化称为量化。模拟图像转换为数字图像。...

2019-04-29 17:22:18 3809

原创 第一章 数字图像基础知识

(1)、灰度值:表示像素明暗程度的数量。(2)、层次:表示图像实际拥有的灰度级的数量。(3)、图像数据的实际层次越多,视觉效果越好。对比度:指的是一幅图片中灰度反差的大小。对比度=最大亮度/最小亮度与清晰度有关的因素:图像质量的优劣既可以通过人眼主观视觉来判断,也可以通过客观指标来衡量。对角上的点。联通性是描述区域和边界的重要概念。两个像素联通的必要条件:两个像素的位置是否相邻。种类:4联通和8联通对于两个像素p和q,如果q在p的4邻域集合中,则称这两个像素是4联通的。对于两个像素p和q

2019-04-29 16:14:41 3014

原创 第一个ndk-jni opencv程序

声明下,我使用的是opencv3.3.4的库,ndk15,至于为什么,看我下一篇文章。1、环境搭建首先要确保你的第一个ndk-jni 环境搭建成功,参考我的上一篇文章《我的第一个NDK-jni程序》,下面呢我会再给大家重新配置一次,看不懂下面配置的就看我上一篇文章https://mp.youkuaiyun.com/mdeditor/89525978#。1、下载ndk15此时我们要用的ndk15,所以我...

2019-04-25 21:02:14 354 2

原创 第一个NDK、jni程序

第一个NDK、jni程序一、环境配置创建新的android studio项目选择NDK支持勾选NDK本机是下载完毕的,如果你的环境没有下载,点击后会自动下载,然后会自动重启生效。选择后点击ok退出,然后打开File – Project Structure – SDK Location, 然后选择Android NDK location,点击 Select defaul...

2019-04-25 20:54:03 229

原创 Ndk jni 调用opencv踩过的坑

一、NDK编译版本的问题当你使用的是Android studio默认的版本,或者ndk16及以上版本进行ndk-build编译,可能会出现以下错误:/build/core/add-application.mk:178: *** Android NDK: APP_STL gnustl_shared is no longer supported. Please switch to either c...

2019-04-25 20:22:51 3321

空空如也

空空如也

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

TA关注的人

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