- 博客(51)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 opencvC++学习4像素操作
opencvC++学习4像素操作读读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at(y, x); 或者 Scalar intensity = img.at(Point(x, y));读一个RGB像素点的像素值 Vec3f intensity = img.at(y, x); float blue = intensity.v...
2018-07-14 14:10:58
494
原创 opencvC++学习3Mat对象
opencvC++学习3Mat对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象使用部分复制:一般情况下只会复制Mat对象...
2018-07-14 14:09:59
466
转载 常见加密算法分类
常见加密算法分类常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。对称加密指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对...
2018-07-10 17:20:00
9759
原创 linux openssl加密文件
linux openssl加密文件openssl 支持的加密算法-aes-128-cbc -aes-128-cfb -aes-128-cfb1-aes-128-cfb8 -aes-128-ecb -aes-128-ofb-aes-192-cbc -aes-192-cfb -aes-192-cfb1-aes-192-cfb8 -aes-192-ecb -aes-192-o...
2018-07-10 11:52:59
1760
2
转载 AES(高级加密算法)
AES(高级加密算法)0.AES简介美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。 本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加。1...
2018-07-09 22:25:13
937
原创 openssl移植到ARM-Linux
openssl移植到ARM-Linuxopenssl简介OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议, 并提供丰富的应用程序供测试或其它目的使用。开发环境Ubuntu 16.04 arm-arago-linux-gnueabi-gcc version 4.5.3 开发环境不一定是我这配置,只要是linux...
2018-07-09 21:41:39
3629
1
转载 完美解决 Linux ubuntu下 Sublime Text 3中文输入问题
完美解决 Linux ubuntu下 Sublime Text 3中文输入问题重装Ubuntu系统后,安装了中文输入法,却发现在sublime 下仍然不能输入中文,经过搜索资料,找到以下解决办法,且均已在本人电脑上经过验证,均有效。知道在将来一定会多次重装linux系统,在此记录一下,也希望可以和大家分享。准备工作1.保存下述代码为 sublime-imfix.c 文件...
2018-07-08 09:09:38
269
原创 炫龙新笔记本安装Ubuntu1804遇到的问题
新笔记本安装Ubuntu1804遇到的问题最近给游戏本装双系统(对没错,我就是用游戏本搞开发的那个人),由于是N卡+Intel核显的电脑(并且是1920*1080及以上的高分屏),装Ubuntu前后遇到各种坑。 下面我们慢慢道来如何爬出这些坑。我遇到的这些坑目前如下,大家可以对号入座: (1)用U盘安装Ubuntu系统,卡死在logo界面(下面那一排进度点根本不动),死活进不去; (...
2018-07-01 23:23:15
2312
转载 数组指针和指针数组的区别
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含...
2018-07-01 20:01:46
163
转载 C语言:static变量、static函数与普通变量、普通函数的区别
static变量、static函数与普通变量、普通函数的区别全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即...
2018-07-01 15:00:28
436
原创 为什么会有原码、反码和补码?
为什么会有原码、反码和补码? 在计算机内,定点数有3种表示法:原码、反码和补码所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。正数的反码和补码都...
2018-07-01 11:05:00
6075
2
原创 opencvC++学习2矩阵的掩膜操作
opencvC++学习2矩阵的掩膜操作获取图像像素指针Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。 获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]像素范围处理saturate_cast...
2018-06-30 18:52:39
464
原创 opencvC++学习1加载、修改、保存图像
opencvC++学习1加载、修改、保存图像 加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来IMREA...
2018-06-29 14:17:34
364
原创 通过model->rowCount();只能返回最多256个数据的长度的问题解决:
通过model->rowCount();只能返回最多256个数据的长度的问题解决问题:QT的QSqlQuery或QSqlQueryModel每次最多只能缓存查询结果的256条。如果查询语句操作的结果超过256条了,也只能返回256。这样就必然会导致在后续操作中的错误。因为rowCount返回的是存储在缓存区中的行数,最大值是256,,在调用rowCount()前调用这两句fe...
2018-06-28 13:29:43
1898
1
原创 Qt4实现MD5文件校验
Qt4实现MD5文件校验目的:实现文件的校验;防止文件损坏,造成的意外情况;问题:Qt5轻松实现,现成API可以使用;Qt4发现不能用;查看帮助,发现有一个函数没有实现; bool addData(QIODevice* device);解决方案:学习这个函数的实现方法; 原来是读取文件的内容然后调用; void addData(const...
2018-06-28 11:46:49
1463
原创 opencvC++学习24直方图计算
代码:#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;Mat src, dst, map_x, map_y;const char* OUTPUT_TITLE = "remap demo";int main(){ src = ...
2018-06-23 22:23:16
203
原创 opencvC++学习23直方图均衡化
什么是直方图(Histogram)图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。图像直方图直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。代码:#include <iostream>#include <opencv2/opencv.hpp&...
2018-06-23 10:28:02
513
原创 opencvC++学习22像素重映射(cv::remap)
什么是像素重映射简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。API:Remap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// x 映射表 CV_32FC1/CV_32FC2InputArray map2,// y 映射表int interpolation,// ...
2018-06-23 09:57:04
652
转载 Qt+opencv+Window10环境搭建
1、下载工具:下载安装Qt最新版本:http://download.qt.io/official_releases/qt/下载安装Cmake最新版本:https://cmake.org/download/下载安装opencv3.1: https://sourceforge.net/projects/opencvlibrary/files/2、双击打开cmake-gui,指定opencv的sourc...
2018-06-23 08:17:31
482
原创 opencvC++学习21霍夫圆变换
霍夫圆检测原理从平面坐标到极坐标转换三个参数假设平面坐标的任意一个圆上的点,转换到极坐标中:处有最大值,霍夫变换正是利用这个原理实现圆的检测。API: cv::HoughCircles因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步: 1. 检测边缘,发现可能的圆心 2. 基于第一步的基础上从候选圆心开始计算最...
2018-06-22 12:08:33
1134
原创 opencvC++学习20霍夫变换-直线
霍夫直线变换介绍Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换对于任意一条直线上的所有点来说变换到极坐标中,从[0~360]空间,可以得到r的大小属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线从平面坐标变换到霍夫空间(极坐标)API:标准...
2018-06-22 11:37:07
659
原创 opencvC++学习19Canny边缘检测
Canny算法介绍Canny是边缘检测算法,在1986年提出的。是一个很好的边缘检测器很常用也很实用的图像处理方法。Canny算法介绍 – 五步 in cv::Canny1.高斯模糊 - GaussianBlur2.灰度转换 - cvtColor3.计算梯度 – Sobel/Scharr4.非最大信号抑制5.高低阈值输出二值图像 代码:#include <opencv2\opencv.hpp...
2018-06-21 11:54:26
306
原创 opencvC++学习18Laplance算子
理论:解释:在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。代码:#include <opencv2\opencv.hpp>using namespace cv;using namespace std;int main(){ Mat src, dst; src = imread("D:/opencvSR...
2018-06-20 21:20:12
223
原创 opencvC++学习17 Sobel算子
卷积应用-图像边缘提取1.边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一, 在图像特征提取、对象检测、模式识别等方面都有重要的作用。2.如何捕捉/提取边缘 – 对图像求它的一阶导数delta = f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强,3.我已经忘记啦,不要担心,用Sobel算子就好!卷积操作Sobel算子是离散微分算子(discret...
2018-06-20 21:06:12
1634
1
原创 visual studio 2015 “正在加载..........的符号”问题的 解决方法
问题:正在加载太久了;写的openCV的程序,运行一下要1秒多,但是我要求实时性,1秒太长了,就算用Matlab跑一样的算法也只要0.5秒,所以我相信C++至少应该比0.5秒短。运行的时候发现左下角就一直闪这些“正在加载。。。的符号”,尽管这些.dll我一个都不认识,也不是我自己加进去的,目测有30+个。解决方法:打开VS的【工具】-【选项】-【调试】-【符号】1、先取消勾选“Microsoft符...
2018-06-20 19:57:58
24651
10
原创 opencvC++学习16处理边缘
卷积边界问题图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。处理边缘...
2018-06-20 16:08:41
431
原创 opencvC++学习15线性滤波:
卷积概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:常见算子Robert算子Sobel算子拉普拉斯算子代码:#include <opencv2\o...
2018-06-19 14:52:59
274
转载 Roberts边缘检测算子
clear all;sourcePic=imread('9.jpg'); %读取原图像grayPic=rgb2gray(sourcePic); %转换成灰度图像subplot(131);imshow(grayPic);title('原图');[high,width]=size(grayPic);newGrayPic=grayPic;%为保留图像的边缘一个像素robertsNum=0; %经robe...
2018-06-19 14:18:59
1582
转载 边缘检测 从Roberts到Canny算子
一、边缘的重要性 边缘在图像处理中的重要性不言而喻。当前AI最高端技术莫过于深度学习,而图像方面的深度学习建模所需要的特征,很多是从边缘为起点,不断向上构成更高层次的特征描述。我们来看下例子,此例摘自zouxy09关于深度学习的一篇文章( Deep Learning(深度学习)学习笔记整理系列): 1995 年前后,Bruno Olshausen和 David F...
2018-06-19 14:04:25
483
原创 opencvC++学习14基本阈值操作
阈值类型一 阈值二值化(threshold binary)大于阈值为255,小于阈值为0。阈值类型二 阈值反二值化(threshold binary Inverted)大于阈值为0,小于阈值为255。阈值类型三 截断 (truncate)大于阈值为该阈值,小于阈值不变。阈值类型四 阈值取零 (threshold to zero)小于阈值为0, 大于阈值不变。阈值类型五 阈值反取零 (thresho...
2018-06-19 11:12:01
563
原创 Qt QPrinter 绘制内容 到 PDF文件
遇到问题:需要把图片、文字导出为PDF,且图片上有文字。首先在.pro 添加 模块QT += printsupport实验代码:#include <QPainter>#include <QPrinter>#include <QPixmap>#include <QBrush>{ QPrinter printer; ...
2018-06-18 21:00:00
2311
原创 opencvC++学习13图像上采样和降采样
图像金字塔概念1.我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔2. 一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。图像金字塔概念 – 高斯金字塔高斯金子塔是从底向上,逐层降采样得到。降采样之后图像大小是原图...
2018-06-15 18:29:13
773
原创 opencvC++学习12形态学操作应用-提取水平与垂直线
形态学操作应用-提取水平与垂直线原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。 - 膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值 - 腐蚀,输出的像素值是结构元素覆盖下输入图像...
2018-06-15 17:38:51
236
原创 opencvC++学习11形态学操作
形态学操作开操作- open先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色闭操作- close先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色形态学梯度- Morphological Gradient膨胀减去腐蚀 又称为基本梯度(其它还包括-内部梯度、方向梯度)顶帽 – top hat顶帽 是原图像与开操作之间的差值图像黑帽 – black h...
2018-06-15 15:27:28
603
原创 opencvC++学习10膨胀与腐蚀
图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段形态学操作-膨胀:跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状形态学操作-腐蚀腐蚀跟膨胀操作的过程类似,...
2018-06-14 12:06:05
279
转载 syszuxpinyin中文输入移植
Syszuxpin中文输入法移植一下载syszuxpin源码https://pan.baidu.com/s/1V37CbvOyhUdqbfiEuMcmRQ二下载wenquanyi输入法https://pan.baidu.com/s/1gIds3u8pB4cqEvMNoHwHNw三源码修改 1. 修改syszuxpnyin.pro文件 如下: TEMPLATE = lib2 修改 pro文件...
2018-06-12 16:49:42
605
原创 opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理
opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理在opencv2中,可能使用blur对图像进行平滑处理,这种方法就是最简单的求平均数。平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多, 但是在很多地方我们仅仅关注它减少噪声的功用。平滑处理时需要用到一个 滤波器 。 最常用的滤波器是 线...
2018-06-11 13:10:13
751
转载 图像处理算法——卷积
一、 什么是卷积? 在图像处理中,卷积操作指的是使用一个卷积核对图像中的每个像素进行一系列操作。 卷积核(算子)是用来做图像处理时的矩阵,图像处理时也称为掩膜,是与原图像做运算的参数。卷积核通常是一个四方形的网格结构(例如3*3的矩阵或像素区域),该区域上每个方格都有一个权重值。 使用卷积进行计算时,需要将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其...
2018-06-10 21:49:47
7446
转载 opencv绘制基本图形及文字
OpenCV中可以绘制的图形有直线、矩形、多边形、圆、椭圆。以及一个写文本的函数puttext1. 基本函数LineC++: void line(Mat& img, Point pt1,Point pt2, const Scalar& color, int thickness=1, int lineType=8,int shift=0)Parameters:img – 图像.pt...
2018-06-10 21:27:45
399
转载 OpenCV3颜色空间转换——cv::cvtColor()详解
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。void cv::cvtColor( cv::InputArray src, // 输入序列 cv::OutputArray dst, // 输出序列 int code,...
2018-06-10 16:00:07
1179
rijndael_ingles2004.rar
2018-07-09
怎么在windows的图片类型文件上添加备注
2024-08-13
linux 使用USB接口wifi+蓝牙模块 如何开发
2017-05-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人