- 博客(25)
- 资源 (13)
- 收藏
- 关注
原创 自定义类重载运算符<< >>,并用FileStorage保存和读取xml文件
OpenCV在2.0以后的版本中提供了FileStorage类,供用户将数据保存为xml或者YAML文件。本文的内容就是介绍如何自定义类,而后重载> 运算符,并通过FileStorage保存和读取xml文件。自定义一个数据类,想要保存的数据为一张图像,以及std::vector和std::vector > 两类点集。自定义类的头文件mydata.h#pragma once#inclu
2018-01-08 19:56:38
1314
3
原创 QGraphicsItem 鼠标点击事件编程方法
功能需求,在QGraphicsView中显示一张图像,如下图,鼠标点击图片时返回图片坐标系内的像素坐标,但是点击边上空白部分时不返回坐标。 实现思路是子类化QGraphicsView,QGraphicsScene, QGraphicsPixmapItem,并重写鼠标点击事件函数mousePressEvent(QGraphicsSceneMouseEvent* event)。光标默认的样式是手型
2017-12-31 22:56:05
15276
原创 QGraphicsView改变光标的样式
QGraphicsView中Item上默认的光标形状是一个手型,用于拖拽。但是下某些应用场景下,我们想要让光标变成其他的形状,比如十字形等。以下是一些解决方案: QGraphicsView 更改鼠标样式 以及QGraphicsItem悬停时更改鼠标样式 Changing the cursor in a QGraphicsView 上述方面主要就是子类化QGraphicsView,然后viewp
2017-12-26 22:26:48
3043
原创 Cmake 找不到OpenCVConfig.cmake文件
在利用Cmake-gui配置Visual studio2013的OpenCV工程时,遇到如下报错: 这说明Cmake不能自动找到OpenCV库所在路径,解决方案是在GUI界面中手动添加OpenCVConfig.cmake以及opencv-config.cmake所在的文件夹,即配置在下图标出的绿色圈所在位置。 这两个文件的所在位置一般是在OpenCV安装路径下的bin文件夹内。
2017-11-06 15:37:57
12667
原创 Visual Studio2013配置OpenCV3.1.0
Step1. BUILD -> Configuration Manager 窗口,将 Active solution platform 栏目内容改为x64 Step2. 在Solution Explorer窗口内,右键项目名称 -> Properties 打开属性页面 Step3. 属性页面下, 打开 Configuration Properties -> VC++ Directories 窗
2017-09-15 18:58:30
617
原创 OpenCV根据矩形轮廓进行倾斜校正
本文将介绍如何利用OpenCV,提取图片中的矩形轮廓特征并进行图片的倾斜校正。完成demo程序可以至:OpenCV根据矩形轮廓进行倾斜校正下载。本demo所处理的图片是一张PCB电路板(如下图),欲实现的功能是将图片中倾斜的PCB校正为水平。基本的思路是检测PCB的边缘直线,而后根据边缘直线的斜率旋转图片。但是由于PCB上布满了各种原件,所以图片在经过轮廓提取直线检测后,会误检出很多条直线。demo
2017-09-14 16:41:56
18960
1
原创 VS2013配置64位ZBar、OpenCV
本人想利用OpenCV与ZBar实现二维码扫描功能。PC上已经配置好了OpenCV3.1.0,并且VS2013配置为64位的开发环境。按照教程:二维码解码器Zbar+VS2012开发环境配置,配置了ZBar0.10,后利用如下代码测试:#include <iostream> #include<opencv2/opencv.hpp>#include <opencv2/core/core.hp
2017-09-06 22:05:34
6119
4
原创 Qt4 工程升级为Qt5工程
Qt5和Qt4相比,有很大的改动和不同,可以参考:从Qt4 到Qt5的变化。 本人电脑安装了Qt5.9.1,在运行《C++ GUI Qt4编程》(第二版)附带源程序时发生了一些问题,本文就介绍一下如何将Qt4工程升级为Qt5,并在新版本的Qt Creator中运行。 以《C++ GUI Qt4编程》(第二版)第二章中的程序gotocell2为例,原本的工程目录包含如下5个文件: 然后打开g
2017-08-25 15:03:02
5950
1
原创 Qt5 由.ui文件生成.pro文件和C++文件
Qt新手,因为项目需要临时学习。在win10系统上安装了Qt5.9.1的最新版本,跟着《C++ GUI Qt4编程》(第二版)学习。由于IDE和教程版本不同,初入手是遇到不少问题。教材2.3节 快速设计对话框介绍了如何使用Qt Designer设计对话框界面。按照教程指导一步步构建一个如下的对话框ui文件gotocelldialog.ui: 接着教程上说“现在运行qmake,生成一个.pr
2017-08-24 22:59:46
3817
1
原创 OpenCV + Java(Android) 设置ROI
在处理图像时, 我们经常需要提取图片中的重要部分进行分析,滤除不重要的噪声背景。通常的操作是设置感兴趣区域(Region of Interest, ROI),然后分割图片。由于操作对象形状的不同,ROI也会具有不同的形状。从简单的矩形,到稍复杂的圆形、椭圆,以及更为复杂的不规则形状。网上有很多关于C++版本的OpenCV设置ROI的博文,但是Java语言版的颇少,本文就着重介绍一下在Java或者An
2017-07-04 18:48:01
4909
2
原创 绘制灰度直方图(OpenCV + Java)
本文介绍一下如何使用Java语言绘制灰度图的直方图。由于Java环境下OpenCV不提供Mat图像的显示方法,如imshow(),因此需要使用SWing组件自己编写显示方法。同时,OpenCV的Jar包也并没有提供相关的抽象数据类型和方法,比如CvHistogram等。一、灰度直方图简介 灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表
2017-06-20 15:59:49
5229
4
原创 OpenCV图像读取与灰度化
在OpenCV中,图像的读取可以通过imread()函数实现: Mat imread( const String& filename, int flags = IMREAD_COLOR ); 读取后的数据存储格式由第二个形参flags决定。flag的值可以从枚举类型cv::ImreadModes中选取:enum ImreadModes { IMREAD_UNCHANGED = -1, /
2017-06-19 13:18:55
3988
原创 基于OpenCV的数码管数字识别
利用OpenCV可实现工业仪表设备的读数识别。仪表一般可分为两:数字式仪表和指针式仪表,本博文主要介绍一下数字式仪表识别的关键技术。下图是用软件模拟的数码管图片,本文识别的也就是图中的数字。一、图像定位 在实际的应用场景中,拍摄到的仪表区域很有可能会包含多余的背景部分,一个比较简单的解决方法是在拍摄时先行设定一个边界区域,提醒拍摄者将待识别的内容限制在区域中。后期识别时直接提取边界区域内的信息进行
2017-06-13 14:01:38
11357
3
原创 Android TextView实现水平滚动显示效果
方法一、xml设置属性+程序中获取焦点第一步,首先在xml文件中设置TextView的属性:<TextView android:id="@+id/text" android:layout_width="340dp" android:layout_height="65dp" android:layout_gravity="center_h
2017-05-31 13:59:18
1798
原创 OpenCV图像拷贝方法与注意点(=、copy、clone)
下面介绍三种OpenCV复制图像的方法:方法1:直接赋值使用用赋值运算符“=”进行的拷贝是一种浅拷贝,虽然它们有不同的矩阵头,但是二者共享相同的内存空间,二者内容相互关联,任何一个变量变化的同时另一个变量也随之改变。/*OpenCV v1版本*/IplImage img_origin = cvLoadImage(".\\picture.jpg", CV_LOAD_IMAGE_COLOR); //
2017-04-07 16:09:57
20351
原创 STM32引脚JTDO、JNTRST与JTDI作为普通IO口使用配置
使用Jlink向STM32烧录程序时,需要使用6个芯片的引脚(以STM32F103C8T6为例),分别是PB4/JNTRST、PB3/JTDO、PA13/JTMS、PA14/JTCK、PA15/JTDI、NRST。标准的20针JLink接口如下图所示。 但芯片IO口资源比较紧张时,可选择SW模式烧录程序。SWD只需用到PA13/JTMS、PA14/JTCK两根线,NREST可以接可不接,而剩下
2017-04-05 20:31:19
41333
4
原创 LTE中的非连续接收机制(DRX)
在无线网络中,当有数据需要进行传输时,用户终端(User Equipment, UE)要一直监听物理下行控制信道(Physical Downlink Control Channel, PDCCH),根据网络侧发送的指示消息对数据进行收发,这样导致 UE的功耗和数据传输的时延都比较大。因此3GPP标准协议在LTE系统中引入非连续接收机制(Discontinuous Reception,DRX)节能策略
2017-03-29 21:34:07
10261
2
原创 基于蓝牙5(BTIoT-5)的物联网架构
下图是一个基于蓝牙5(BTIoT-5)的物联网架构图。该架构分成了六层,分别是:硬件设备层、微控制器层、蓝牙连接层、互联网连接层、物联网蓝牙云平台层和应用层。硬件设备层处于架构的最底层,比如车辆、传感器、智能手机、国防设备、农业设备以及家用电器等等。硬件层负责的任务就是把设备自身或者周围的信息发送给上层,即微控制器层。微控制器主要应用于各种自动控制设备,包括医疗设备、工业设备、办公设备等等。许多控制
2017-03-29 21:28:29
2247
转载 SSD主控的软件架构
1) 操作系统位于整个系统的最上层,直接关系到用户的使用体验,普通用户只需要在操作系统中进行一些操作即可。如:WINDOWS、OS、Linux等。2) 文件系统:文件系统位于操作系统之下,操作系统的指令是通过文件系统来到达硬盘的,所以每个操作系统都会有不同的文件系统,例如WINDOWS上使用的NTFS,FAT等,Linux上使用的ext3,ext4等等。3) 底层驱动:底层驱动是位于软件层面
2017-03-29 21:23:47
2551
原创 浅谈窄带物联网(NB-IoT)
一、发展历程物联网通信技术繁多,从传输距离上可划分成两类:第一类是短距离通信技术,例如ZigBee、Wi-Fi、Bluetooth等,典型的应用场合如智能家居;第二类是低功耗广域网(Low Power Wide Area Network, LPWAN),典型的应用为智能抄表系统。LPWAN技术又可根据工作频段分为两类:一类工作在非授权频段,如Lora、SigFox等,此类技术无统一标准,自定义实现;
2017-03-29 20:25:44
28921
原创 OpenCV findContours导致程序崩溃和相关使用问题
OpenCV新手上路,官网下载了一个OpenCV3.2.0版本,在VS2013上编程。安装各种教程配置好环境后开始研究。第一个任务是数码管数字识别。找了一张图片,开始读取灰度图,二值化,膨胀(数码管数字笔画是不连的,为了轮廓提取方便需要进行膨胀使得数字笔画相连),轮廓提取,数组分割,识别。。。 但是在轮廓提取过程发生了问题,主要是findContours()函数惹的祸,一运行到这个函数程序就崩溃,
2017-03-17 15:10:32
4758
翻译 C++指针与const
(本文参考C++ Primer Plus)1. const指针指向const变量(合法)const int var = 1;const int* p1 = &var; 程序合法,而且都不能通过var和*p1改变地址上或者变量的值。2. const指针指向非const变量(合法) int var = 1; const int* p1 = &var; 程序合法,不能通过地址操作修改变量的值(*p
2017-03-08 19:05:33
638
原创 蓝牙的主要演进版本
蓝牙技术最开始由爱立信公司着手开发,事实上该公司在1994年的时候已经开始了该通信技术的开发工作。在1998年2月,爱立信、IBM、诺基亚、英特尔和日本的东芝公司成立了Bluetooth Special Interest Group(SIG),该组织自成立以来就一直致力改良和提升蓝牙技术,不断更新蓝牙通信协议的版本。截止目前为止蓝牙协议共经历了多个版本的变迁,其中主要包括有V1.1,V1.2,V2
2017-03-01 21:36:54
1827
原创 MOS管栅极串联电阻的作用
如果没有栅极电阻,或者电阻阻值太小 MOS导通速度过快,高压情况下容易击穿周围的器件。栅极电阻阻值过大 MOS管导通时,Rds会从无穷大将至Rds(on)(一般0.1欧姆级或者更低)。栅极电阻过大时,MOS管导通速度过慢,即Rds的减小要经过一段时间,高压时Rds会消耗大量功率,导致MOS管发烫。过于频繁地导通会使热量来不及发散,MOS温度迅速身高。在高压下,PCB的设计也需要注意。栅极电阻
2017-02-17 19:41:21
20965
OpenCV根据矩形轮廓校正倾斜
2017-09-15
OpenCV根据矩形轮廓进行倾斜校正
2017-09-15
OpenCV + Java(Android) 设置ROI
2017-07-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人