一.鼠标事件的简单演示 opencv中的鼠标事件,值得是任何与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等.我们先来看看鼠标事件有哪些,在python中执行下面代码: import cv2 as cv events=[i for i in dir(cv) if 'EVENT' in i] print(events) 输出结果: ['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MB…
一.绘制简单的几何形状和添加文本 opencv中绘制图形很简单,我们只需要使用下面这些常用函数即可. #画线 cv2.line() #画圆 cv2.circle() #画矩形 cv. rectangle() #画椭圆 cv.ellipse() #向图像添加文本 cv.putText() 在上述所有功能中,我们可以看到一些常见的参数,如下所示: img:我们要绘制形状的图像 color:形状的颜色.对于BGR,将其作为元组传递,例如:(255,0,0)就是蓝色.灰度图的话,我们只需要传递标量值即可…
序言 笔者最近做了两个CV领域的项目,因为数据量不足所以主要使用的是传统的CV方法.这时候不得不夸一句opencv库,让复杂的算法原理变得如此简单(调包调参侠表示很骄傲).所以闲暇下来对opencv的方法进行整理,一是巩固之前学到的知识,二是希望和广大朋友们分享.话不多言,咱们开始~ 一.图像读取 使用 OpenCV读取图像比较简单,可以使用此函数读取图像. cv2.imread() 图像应该在工作目录或图像的完整路径给出.我们需要给它传递两个参数,第二个参数是一个标志,它指定了读取图像的方式.…
一.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来.        要捕获视频,我们需要创建一个 VideoCapture 对象.它的参数可以是设备索引或视频文件的名称.设备索引就是指定哪个摄像头的数字.我们可以通过传递1来选择第二个相机,以此类推.在此之后,我们需要通过逐帧捕获将视频保存为画面.但是在最后,不要忘记释放被捕获的俘虏.下面代码就可以实现从相机中读取视频的操作. impo…
0.序言 这一篇博客我们将学习图像的几种算术运算,例如加法,减法,按位运算等. 1.图像加法 我们可以通过OpenCV函数 cv.add() 或仅通过numpy操作 res=img1+img2 res = img1 + img2 将两个图像加起来.两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值. 注意:OpenCV加法和Numpy加法之间有区别.OpenCV加法是饱和运算,而Numpy加法是模运算. 例如,考虑以下示例: >>> x = np.uint8([250])…
​ 0.序言 之前的博客里我们介绍了opencv在图像上的基本操作,下面我们来进行稍微深入一点的介绍,从这里开始我们可以发现opencv库能给我们带来的更多更有趣的功能.从现在开始,我们将逐步深入了解opencv库中对图像处理的一些高级方式. 在这篇博客中,我们将学习如何将图像在色彩空间之间的转换,例如BGR转换成灰色,BGR转换成HSV等 此外,我们还将创建一个应用程序,以提取视频中的彩色对象 我们还将学习以下功能:cv.cvtColor,**cv.inRange**等 1.改变颜色空间 Op…
0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基本操作我们需要对numpy知识的了解,不需要很多,只知道基本用法即可.这里暂不赘述,读者可查阅其余资料进行学习. 1.访问和修改像素值 让我们先加载彩色图像: import numpy as np import cv2 as cv img = cv.imread('cat.jpg') 我们可以通过行…
Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/7804785.html (二)   http://www.cnblogs.com/gdsblog/p/7804770.html (三)   http://www.cnblogs.com/gdsblog/p/7804758.html (四) http://www.cnblogs.com/gdsblog/…
一.引言 WPF除了创建了一个新的依赖属性系统之外,还用更高级的路由事件功能替换了普通的.NET事件. 路由事件是具有更强传播能力的事件——它可以在元素树上向上冒泡和向下隧道传播,并且沿着传播路径被事件处理程序处理.与依赖属性一样,可以使用传统的事件方式使用路由事件.尽管路由事件的使用方式与传统的事件一样,但是理解其工作原理还是相当重要的. 二.路由事件的详细介绍 对于.NET中的事件,大家应该在熟悉不过了.事件指的在某个事情发生时,由对象发送用于通知代码的消息.WPF中的路由事件允许事件可以被…
前三篇Cordova入门系列,简单讲解了Cordova,以及如何调用Cordova插件,今天我们讲解一下如何自己做一个插件. 自定义插件,就是自己写一些安卓java代码,然后和js代码以及配置文件,封装成一个cordova插件.通过js代码,调用安卓java代码,从而实现调用原生的东西.只不过这些调用原生的行为是我们为了我们自己特定的需求写的,而不是Cordova官方的... 自定义插件的结构: |---pluginName                         |---src |--…
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 引入HTML页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF…
× 目录 [1]定义 [2]对象方法 [3]应用 前面的话 剪贴板操作可能看起来不起眼,但是却十分有用,可以增强用户体验,方便用户操作.本文将详细介绍剪贴板事件 定义 剪贴板操作包括剪切(cut).复制(copy)和粘贴(paste)这三个操作,快捷键分别是ctrl+x.ctrl+c.ctrl+v.当然也可以使用鼠标右键菜单进行操作 关于这3个操作共对应下列6个剪贴板事件 copy:在发生复制操作时触发 cut:在发生剪切操作时触发 paste:在发生粘贴操作时触发 IE浏览器只有在文本中选定字…
<!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="js/jquery-3.3.1.js"></script> <link rel=&q…
本篇懒得排版,直接在网页html编辑器编辑 在图像处理时,我们常常需要求出图像的直方图.灰度平均值.灰度的方差,这里给出一个opencv2+自带程序,实现这些功能. 直方图 对于直方图,使用cv::calcHist函数可以求出. 原型 void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize,…
序言:ElasticSearch致力于隐藏分布式系统的复杂性,以下的操作都是在底层自动完成的: 将你的文档分区到不同的容器或者分片(shards),他们可以存在于一个或多个节点中 将分片均匀的分配到各个节点,对索引的搜索做负载均衡 冗余每一个分片,防止硬件故障造成的数据丢失 将集群中任意一个节点上的请求路由到相应数据所在的节点 无论是增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移 一.集群内部工作方式 Elasticsearch用于构建高可用结可扩展的系统.扩展的方式可以是购买更好的服务…
一.概述 本篇文章主要介绍如何创建用户和角色相关概念,同时对角色的添加和删除做了相关介绍. 版本:3.6.2 二.角色相关概念 1.数据库用户角色 read:该角色拥有数据的只读权限,系统集合以及system.indexes,system.js,system.namespaces集合除外. readWrite:该角色拥有对应数据库的读写权限,系统集合和system.js集合除外. 2.数据库管理角色 dbAdmin:该角色拥有指定数据库数据库管理权限,包括 system.indexes, sys…
一,一些相关解释 Service 在应用服务层也就是application层.应用服务用于将领域(业务)逻辑暴露给展现层.展现层通过传入DTO(数据传输对象)参数来调用应用服务,而应用服务通过领域对象来执行相应的业务逻辑并且将DTO返回给展现层. 也就是这样避免了应用服务层和展现层的,直接数据交互,而是通过dto实现了数据过滤,这样就可以较好的避免非法数据的传入传出.另外大头还要实现数据隐藏,方便扩展等好处. 创建应用服务时需要注意: 1.service 要实现IApplicationServi…
为什么需要内部类? 真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题没有多继承.实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好解决java不支持多继承的问题. 内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良…
通过上一章节的操作,我们的项目已经创建完成了, 大家通过http://127.0.0.1/MyFirst/应该都已经访问到了自己的应用, 接下来,我们展开我们项目,如图所示: 一.目录结构 1. .sencha目录 .sencha 文件夹下主要是sencha cmd创建项目时生成的一些配置文件,对我们的开发并没有太大影响,我们可以暂时先不去管它 2. app 目录 app文件夹是我们的项目主体文件夹,我们整个项目的功能代码基本都在这个目录中, 整个目录体现了sencha touch的mvc结构,…
1. 原理 对两张图片使用如下公式可以得到两张图片的混合图片, 其中f0(x),f1(x)分别是图片1和图片2同一位置的像素点. 2. OpenCV中的AddWeight函数 函数和参数说明: ) src1 – first input array. alpha – weight of the first array elements. src2 – second input array of the same size and channel number as src1. beta – wei…
前面介绍了Spring Boot的优点,然后介绍了如何快速创建Spring Boot 项目.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html. 今天我们主要来看看 Thymeleaf 在 Spring Boot 中的整合! 这个系列课程的完整源码,也会提供给大家.大家关注我的微信公众号(架构师精进),回复:springboot源码 获取这个系列课程的完整源码.或者点此链接直接下载完整源码 Thy…
总结分析列表.元组.字典.集合的相同与区别之处,只有彻底分清之后,就会在应用的时候,得心应手. 四句话总结 列表是一个有序且可更改的集合,允许重复成员. 元组是一个有序且不可更改的集合,允许重复成员. 集合是一个无序.不可更改*且未索引的集合,没有重复成员. 字典是一个有序且可更改的集合,没有重复成员. 公有的部分 获取长度,使用len() 要确定列表中有多少项,请使用len()函数 thislist = ["apple", "banana", "cher…
成员存储类型 除了大纲计算,维度成员的另一项重要属性是存储类型,存储类型决定维度成员相关单元格的物理存储方式.在维库中编辑成员的[Data Storage]属性,下拉菜单中可选的5种,再加上Shared成员,一共6种存储类型. Store:储存数据.当一个单元格所有成员的存储类型都是Store时,单元格的数据会物理存储.前面说明输入单元格和计算单元格时,似乎存在这样的印象——非0级和带有成员公式的单元格都是不可输入的,必须由子代成员合并或公式计算得到.其实不然,决定单元格是否“可输入”是由存储类…
前言 今天这篇内容主要讲述HTML 5 Web Worker(一种支持前端js多线程的技术). 工作线程(Web Worker) web worker介绍 W3C 在 HTML5 的规范中提出了工作线程(Web Worker)的概念,工作线程允许开发人员编写能够长时间运行而不被用户所中断的后台程序, 去执行事务或者逻辑,并同时保证页面对用户的及时响应.工作线程的出现使得在 Web 页面中进行多线程编程成为可能.众所周知,传统页面中(HTML5 之前)的 JavaScript 的运行都是以单线程的…
Map 创建Map // 创建一个不可变的Map scala> val ages = Map("Leo" -> 30, "Sparks" -> 25) ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Sparks -> 25) // 创建一个可变的Map scala> val ages = scala.collection.mutable.Map(…
Camera提供了一个叫做setParameters的方法帮助开发者设置相机的相关参数. 通过Camera的getParameters方法可以获取到当前为相机设置的相关参数. 下面简单介绍下,视频录制会用到的几个参数的用法. 一.设置PreviewSize,即视频预览大小,也即输出到SurfaceView的视频图片的分辨率大小. 需要注意的是,PreviewSize只有那么有限的几种,各个手机的值也不近相同,不是随便传进去个Size都行的.当然你非得随便搞个Size传进去,编译时不会出现任何问题…
前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友,可以先看看之前的文章.https://www.cnblogs.com/zhangweizhong/category/1275863.html 今天就正式开始写Go 的代码,讲讲如何理解interface接口. 1. 什么是interface接口 interface 是GO语言的基础特性之一.可以理解为一种类型的规范或者约定.它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“impl…
SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL.在SpringBoot中,配置多数据源的方式十分便捷, 下面开始上代码: 在pom.xml文件中需要添加一些依赖 <!-- Spring Boot Mybatis 依赖 --> <dependency> <…
前言 本篇将讲述HTML5的服务器发送事件(server-sent event) Server-Sent 事件 Server-Sent 事件是单向消息传递,指的是网页自动获取来自服务器的更新. 以前的做法是网页不断的询问(向服务器发送请求)是否有可用的更新.通过服务器反馈之后,获得更新. 轮训方案 我们使用上篇HTML5简单入门系列(四)web worker的技术简单实现一下该轮训方案,主动向服务器询问是否有更新. 由于web worker不能访问document等对象,是不能和jQuery连用…
一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的需求. 二.HOW 所以实际项目如果需要实现视频录制这个需求,一般只有两条路可以走: 找第三方视频录制SDK 自己实现 如果你的产品经理选择了第一条路,那么恭喜你,你会少接触到很多坑.说到这里,目前能用的第三方视频录制SDK我知道的就下面两家: 趣拍,视频录制功能是免费使用的,SDK包也不太大. V…