2020-11-14 14:28:44
勇哥引言:OpenCV是计算机视觉库,Tensorflow是深度学习框架。
OpenCV包含了大量的图像处理和计算机视觉的算法,但是在机器学习方面明显不足,ML模块只有SVM,MLP,
kNN等有限的几种算法。dnn模块也是调用别的框架。
Tensorflow是专为深度学习而生,可以方便的实现各种深度学习算法。
二者不属于同一领域,做视觉用OpenCV,做深度学习用Tensorflow。或...
2020-08-22 11:46:14
opencv形态学运算opencv形态学运算形态学是生物学中研究动物和植物结构的一个学科分支。数学形态学是以形态为基础对图像进行分析的数学工具。基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。形态学图像处理的数学基础是集合论。1964,Matheron指导下的Serra做岩相学分析。1966年命名Mathematical Morphology。1968年...
2020-03-31 09:21:52
最小二乘法拟合直线概念:最小二乘法多项式直线拟合,根据给定的点,求出它的函数y=f(x),当然求得准确的函数是不太可能的,但是我们能求出它的近似曲线y=φ(x) 原理假设有点 , I = 1,2,3,……n,求近似曲线y=φ(x),并且使得y=φ(x)与y=f(x)的平方偏差和最小,偏差其中我们要找到一组最好的a b ,“最好的”就是要使选出的a b能使得所有的误差达到最小化。在此要注意以下,y...
2020-02-22 17:27:08
前段时间一直在做图像模板匹配。需要对旋转模板进行匹配,并且对速度精度都有较高的要求。OpenCV里面并没有较好的解决方法。cvMatchTemplate( const CvArr* image, constCvArr* templ,CvArr* result,int method )
Image 待搜索图像
Templ 模板图像
Result 匹配结果 用来存放通过以下方法计算出滑动...
2020-02-22 16:25:38
为何需要进行亚像素定位?数字图像通常是离散化成像素;每个像素对应一个整数坐标位置;整数坐标位置对于很多应用并不精确,比如跟踪、相机标定、图像配准、图像拼接以及三维重构;为达到有些应用的精确性,需要精确到浮点坐标位置;所以亚像素定位问题。亚像素定位就是计算特征所在图像中的真实位置,而真实位置有时候并不在像素所在整数坐标位置上,而是在像素的内部。点的灰度分布特征跟二维高斯模型很相似,中心处最亮,离中心...
2020-02-22 16:18:11
霍夫变换检测霍夫变换之直线检测霍夫变换直线检测前提条件-边缘检测已经完成平面空间到极坐标空间的转换(空间域向霍夫域的转换)检测原理两点确定一条直线,通过一点可以确定无数条直线,极坐标直线公式每个点通过角度取不同的值,都能在横坐标为角度值,纵坐标为ρ值的坐标系内确定一条曲线,只要角度值的精细度足够。ρ代表直线到原点的距离。对每个像素采取这样的操作,将会得出很多这样的曲线,这些曲线的交点证明,这些点所...
2020-02-22 09:29:51
用一张棋盘格来进行图像的像素精度计算,其计算程序是:#include"opencv2/opencv.hpp"
using namespace cv;
int main()
{
Mat srcimg = imread("6.bmp");
Mat gray;
cvtColor(srcimg,gray,CV_RGB2GRAY);
Size b...
2020-02-18 15:09:06
OpenCV 学习(直线拟合)Hough 变换可以提取图像中的直线。但是提取的直线的精度不高。而很多场合下,我们需要精确的估计直线的参数,这时就需要进行直线拟合。直线拟合的方法很多,比如一元线性回归就是一种最简单的直线拟合方法。但是这种方法不适合用于提取图像中的直线。因为这种算法假设每个数据点的X 坐标是准确的,Y 坐标是带有高斯噪声的。可实际上,图像中的每个数据点的XY 坐标都是带有噪声的。下面...
2020-02-18 14:43:08
OpenCV单目视觉定位(测量)系统The System of Vision Location with Signal CameraAbstract:This passage mainly describes how to locate with signalcamera,which bases on OpenCV library.Key words: OpenCV; Locate;Signalc...
2020-02-18 14:11:53
在图像处理领域,常常需要设置感兴趣区域来专注或者简化工作过程,也就是从图像中选择一个图像区域,这个区域是图像分析所关注的重点。 定义ROI区域有两种方法:Mat imageROI;
//方法一
//前两个参数是相对于原图像的坐标,后两个参数是ROI区域的宽和高
imageROI = image(Rect(pos_left,pos_top,logo.cols,logo.rows)...
2020-02-18 14:08:01
知识点:ROI解释:图像的 ROI(region of interest) 是指图像中感兴趣区域、在 OpenCV 中图像设置图像 ROI 区域,实现只对 ROI 区域的操作。提取不规则ROI区域的一般步骤:1、通过inRange函数生成mask2、通过与操作提取ROI
#ifndef DAY16
#define DAY16
#include <opencv2/opencv.hp...
2020-02-18 13:43:19
下面的代码演示将opencv的窗口嵌入到label里面显示。即labDisplayImg里面显示。#include <windows.h>
oid QtForOpencv::OnReadimg(){
QString filename = QFileDialog::getOpenFileName(this,
tr("选择图像"),
"...
2020-02-18 11:48:10
MFC OpenCV:显示图片的3种方法(详细)一、背景二、方法三、实现3.1 嵌套OpenCV窗口显示图片3.2 转换格式显示OpenCV图片3.3 OpenCV图片保存后显示一、背景 由于OpenCV常用的界面只是单纯的打开图像窗口,相关界面控件和工具较少且不美观,故使用MFC制作界面,而用OpenCV单纯做图像处理。此时便需要在MFC中显示OpenCV所用的图片。二、方法1、嵌套。直接将O...
2020-02-18 09:36:43
如果碰到如题的提示,可以右键QWidget,选择布局。添加布局成功后,可以看到LoginUi新增了layout属性实际上,这种问题有时候把窗体上全部控件删除完了,都还是报错。因此原因说不清楚了。最简单的办法只能是防止,每放一部分控件就保存一下,没问题继续。--------------------- 作者:hackpig来源:www.skcircle.com版权声明:本文为博主原创文章,转载请附上博...
2020-02-17 17:02:33
勇哥学习了十来天的QT,边学边写了个小练习。放上来做为一些知识点的备查。这个小程序的功能有:磁盘读取歌曲名列表双击歌曲名调用外部播放器播放可以支持首拼方法模糊搜索歌曲控件的右键菜单功能很简单,但是用到了一些常用的Qt知识点,包括:QListWidget控件QTabWidget控件QPushButton控件QLineEdit控件控件相关的信号与槽SIGNAL和SLOT宏foreachtry...ca...
2020-02-17 16:55:53
简述在QT中,我们时常要对文件进行各种操作,比如文件的创建、写入、拷贝和删除等等,这些都要用到QFile类。QFile类提供了读写文件的接口。一般情况下,我们可以直接在调用构造函数的时候传递文件名,这是比较方便的方法。或者使用QFile创建对象,再调用setFileName()方法来设置文件路径。其中文件名中的路径分隔符要求必须是'/',其他分隔符QFile不支持。 常用接口QFi...
2020-02-17 16:34:38
QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:Qt::ContextMenuPolicy contextMenuPolicy () constvoid setContextMenuPolicy ( Qt::ContextMenuPolicy policy )Qt::ContextMenuPolicy 枚举类型包括:Qt::DefaultContextMen...
2020-02-17 15:28:55
1.重点既然要给控件添加右键菜单,那如何让控件知道我们点击了它呢?首先需要给控件设置上下文菜单策略 setContextMenuPolicy(Qt::CustomContextMenu) ;设置该策略后当我们右键点击控件时qt会发送一个信号 void QWidget::customContextMenuRequested(const QPoint &pos) ,其中参数pos用来传递右键点...
2020-02-17 13:34:42
一、回顾上一篇文章超级实用的属性浏览器控件--QtTreePropertyBrowser讲了怎么去编译QtTreePropertyBrowser库,并且可以简单实用。由于我下载的库是基于Qt4的版本,所以编译起来也费劲巴拉的,改了好久的源码才编译通过。本篇文章我们核心讲解的是怎么把这个库编译成动态库,让别的模块去动态调用。这里引入Qt官方维护的模块QtSolutions,里边就包含了QtTreeP...
2020-02-17 11:01:25
本篇博客的目的是简单介绍:创建一个用QLabel类来显示图片的自定义控件的编写。如果想实现在图片上绘制文字、箭头和曲线,请参考我的第二篇博客源码!!!给大家一个链接~【Qt自定义控件的创建与初步使用(二)之图片上绘制文字、箭头、曲线 】在写自定义控件的过程中遇到了很多的难题,但都慢慢解决了,本人对Qt自定义控件的认识还不深刻,做的不对的地方,还请大家指出,我会尽快修改,免得误导他人!同时推荐...
2020-02-17 10:01:26
这个QtTreePropertyBrowser控件勇哥是必须要搞清楚怎么使用的,因为它实在是太有用了。在做机器视觉程序时,许多选项用它个控件进行设置非常方便,否则的话,你得拖入无数个lable, button。(界面右边就是QtTreePropertyBrowserr控件的演示)qt这个控件由于不是QT5.6自带(但是奇怪的是却自带源码),怎么把它激活用起来了? 网上的资料真是混乱得可怕,各平台不...
2020-02-16 21:10:49
前言之前,已经详细说明了QtPropertyBrowser的安装配置,可参见我的博客《QtPropertyBrowser控件在Qt5.5上的安装配置》,下面具体讲述如何使用QtPropertyBrowser中QtTreePropertyBrowser控件。添加内容QtTreePropertyBrowser是通过Manager来管理属性的,他提供了很多类型的管理,属性表里的属性条目,是通过Manag...
2020-02-16 19:02:36
如下有问题的代码:#include <QCoreApplication>
#include <QMap>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<QString, QStr...
2020-02-16 18:08:30
在网上找了很多,结果很多是雷同的。然后自己看了些汉字编码规则,结合网上的一些实例,写出了这篇博客。首先看测试代码和结果:int main()
{
QStringList tests;
tests << "我是中国人"
<< "你好朋友";
foreach (QString...
2020-02-14 16:14:47
Qt的QString类提供了很方便的对字符串操作的接口。使某个字符填满字符串,也就是说字符串里的所有字符都有等长的ch来替代QString::fill ( QChar ch, int size = -1 )例如QString str = "Berlin";
str.fill('z');
// str == "zzzzzz&quo...
2020-02-14 16:04:45
QStringList fonts;
fonts << "Arial" << "Helvetica" << "Times" << "Courier";
QString str = fonts.join(",");
QString s...
2020-02-14 15:41:33
//适用于关闭后台进程的方法
QString c = "taskkill /im notepad.exe /f";
int pInt = QProcess::execute(c);
//关闭后台notepad.exe进程,阻塞式运行,一直占用cpu,成功返回0,失败返回1
qDebug()<<"pInt:"...
2020-02-14 15:03:20
1、简单使用 - 增加、删除、插入效果图链接信号和槽connect(ui.addBtn, SIGNAL(clicked()), this, SLOT(AddItem()));
connect(ui.deleteBtn, SIGNAL(clicked()), this, SLOT(DeleteItem()));
connect(ui.insertBtn, SIGNAL(clicked()), t...
2020-02-14 08:33:27
装有vistual assist插件的vs2013打开工程提示语法错误,但是可以正常编译运行。这又是什么鬼呢?经过观察,在vs的状态栏上,如果vistual assist显示初始化成功,则打开工程后没有问题。一定提示初始化失败,则出现上面的现象。(vistual assist出现这种错误)如果重新打开工程还是不行,可以尝试"清理解决方案",重新编译后保存退出,再打开,这时候vi...
2020-02-13 21:53:15
代码如下:QFile file(filepath + "/" + filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)){
auto res = file.readAll();
QString s1(res);
auto list1 = s1.split("...