自定义类重载运算符<< >>,并用FileStorage保存和读取xml文件 OpenCV在2.0以后的版本中提供了FileStorage类,供用户将数据保存为xml或者YAML文件。本文的内容就是介绍如何自定义类,而后重载> 运算符,并通过FileStorage保存和读取xml文件。自定义一个数据类,想要保存的数据为一张图像,以及std::vector和std::vector > 两类点集。自定义类的头文件mydata.h#pragma once#inclu
QGraphicsItem 鼠标点击事件编程方法 功能需求,在QGraphicsView中显示一张图像,如下图,鼠标点击图片时返回图片坐标系内的像素坐标,但是点击边上空白部分时不返回坐标。 实现思路是子类化QGraphicsView,QGraphicsScene, QGraphicsPixmapItem,并重写鼠标点击事件函数mousePressEvent(QGraphicsSceneMouseEvent* event)。光标默认的样式是手型
QGraphicsView改变光标的样式 QGraphicsView中Item上默认的光标形状是一个手型,用于拖拽。但是下某些应用场景下,我们想要让光标变成其他的形状,比如十字形等。以下是一些解决方案: QGraphicsView 更改鼠标样式 以及QGraphicsItem悬停时更改鼠标样式 Changing the cursor in a QGraphicsView 上述方面主要就是子类化QGraphicsView,然后viewp
Cmake 找不到OpenCVConfig.cmake文件 在利用Cmake-gui配置Visual studio2013的OpenCV工程时,遇到如下报错: 这说明Cmake不能自动找到OpenCV库所在路径,解决方案是在GUI界面中手动添加OpenCVConfig.cmake以及opencv-config.cmake所在的文件夹,即配置在下图标出的绿色圈所在位置。 这两个文件的所在位置一般是在OpenCV安装路径下的bin文件夹内。
Visual Studio2013配置OpenCV3.1.0 Step1. BUILD -> Configuration Manager 窗口,将 Active solution platform 栏目内容改为x64 Step2. 在Solution Explorer窗口内,右键项目名称 -> Properties 打开属性页面 Step3. 属性页面下, 打开 Configuration Properties -> VC++ Directories 窗
OpenCV根据矩形轮廓进行倾斜校正 本文将介绍如何利用OpenCV,提取图片中的矩形轮廓特征并进行图片的倾斜校正。完成demo程序可以至:OpenCV根据矩形轮廓进行倾斜校正下载。本demo所处理的图片是一张PCB电路板(如下图),欲实现的功能是将图片中倾斜的PCB校正为水平。基本的思路是检测PCB的边缘直线,而后根据边缘直线的斜率旋转图片。但是由于PCB上布满了各种原件,所以图片在经过轮廓提取直线检测后,会误检出很多条直线。demo
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
Qt4 工程升级为Qt5工程 Qt5和Qt4相比,有很大的改动和不同,可以参考:从Qt4 到Qt5的变化。 本人电脑安装了Qt5.9.1,在运行《C++ GUI Qt4编程》(第二版)附带源程序时发生了一些问题,本文就介绍一下如何将Qt4工程升级为Qt5,并在新版本的Qt Creator中运行。 以《C++ GUI Qt4编程》(第二版)第二章中的程序gotocell2为例,原本的工程目录包含如下5个文件: 然后打开g
Qt5 由.ui文件生成.pro文件和C++文件 Qt新手,因为项目需要临时学习。在win10系统上安装了Qt5.9.1的最新版本,跟着《C++ GUI Qt4编程》(第二版)学习。由于IDE和教程版本不同,初入手是遇到不少问题。教材2.3节 快速设计对话框介绍了如何使用Qt Designer设计对话框界面。按照教程指导一步步构建一个如下的对话框ui文件gotocelldialog.ui: 接着教程上说“现在运行qmake,生成一个.pr
OpenCV + Java(Android) 设置ROI 在处理图像时, 我们经常需要提取图片中的重要部分进行分析,滤除不重要的噪声背景。通常的操作是设置感兴趣区域(Region of Interest, ROI),然后分割图片。由于操作对象形状的不同,ROI也会具有不同的形状。从简单的矩形,到稍复杂的圆形、椭圆,以及更为复杂的不规则形状。网上有很多关于C++版本的OpenCV设置ROI的博文,但是Java语言版的颇少,本文就着重介绍一下在Java或者An
绘制灰度直方图(OpenCV + Java) 本文介绍一下如何使用Java语言绘制灰度图的直方图。由于Java环境下OpenCV不提供Mat图像的显示方法,如imshow(),因此需要使用SWing组件自己编写显示方法。同时,OpenCV的Jar包也并没有提供相关的抽象数据类型和方法,比如CvHistogram等。一、灰度直方图简介 灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表
OpenCV图像读取与灰度化 在OpenCV中,图像的读取可以通过imread()函数实现: Mat imread( const String& filename, int flags = IMREAD_COLOR ); 读取后的数据存储格式由第二个形参flags决定。flag的值可以从枚举类型cv::ImreadModes中选取:enum ImreadModes { IMREAD_UNCHANGED = -1, /
基于OpenCV的数码管数字识别 利用OpenCV可实现工业仪表设备的读数识别。仪表一般可分为两:数字式仪表和指针式仪表,本博文主要介绍一下数字式仪表识别的关键技术。下图是用软件模拟的数码管图片,本文识别的也就是图中的数字。一、图像定位 在实际的应用场景中,拍摄到的仪表区域很有可能会包含多余的背景部分,一个比较简单的解决方法是在拍摄时先行设定一个边界区域,提醒拍摄者将待识别的内容限制在区域中。后期识别时直接提取边界区域内的信息进行
Android TextView实现水平滚动显示效果 方法一、xml设置属性+程序中获取焦点第一步,首先在xml文件中设置TextView的属性:<TextView android:id="@+id/text" android:layout_width="340dp" android:layout_height="65dp" android:layout_gravity="center_h