基于Python的Cameo实现详解
以下内容为学习
同时参考了文章:Python 使用Opencv实现cameo功能,https://blog.csdn.net/HuangZhang_123/article/details/80415861
该代码由managers.py,cameo.py两部分组成,运行cameo.py实现控制摄像头拍摄及录屏,截图的功能.
详细代码及注释如下:
managers.py
import cv2
import numpy as np
import time
#视屏管理类
#来读取新的帧,并能将帧分派到一个或多个输出中,这些输出包括静止的图片文件,视频文件以及窗口
class Capturemanager(object):
#类变量前加 _ 代表变量设置保护变量,只有类和子类才能访问
#类变量前加 __ 代表将变量设置私有变量,只有类对象才能访问
def __init__(self, capture, previewWindowManager=None, shouldMirrorPreview=False):
self.previewWindowManager = previewWindowManager#创建界面管理类
self.shouldMirrorPreview = shouldMirrorPreview#控制图像是否翻转,产生镜像文件
self._capture = capture#视频或图片提取类型
self._channel = 0#通道数,暂时没有使用
self._enteredFrame = False#判断之前的窗口是否存在,默认为False
self._frame = None#当前帧的图像
self._imageFilename = None#图片名称,当截取图片时赋值,截取完毕后重新赋值None
self._videoFilename = None#视屏名称,当截取视屏时赋值,截取完毕后重新赋值None
self._videoEncoding = None#视频录制过程中赋值encoding,结束时赋值None
self._videoWriter = None#在视频录制时赋值cv2.VideoWriter作用,指定视频格式并进行frame的记录,录制结束后赋值None
self._startTime = None#计算fps的起始时间
self._framesElapsed = float(0)#视频共录制帧数
self._fpsEstimate = None#fps值
#设置只读属性
@property
def channel(self):
return self._channel
#设置可写属性
@channel.setter
def channel(self, value):
if self._channel != value:
self._channel = value
self.frame = None
#设置只读属性
@property
def frame(self):
if self._enteredFrame and self._frame is None:#在已存在窗口且frame为空的情况下,使用retrieve()方法提取摄像头数据
#_enteredFrame为第一帧提取出的摄像头数据
_, self._frame = self._capture.retrieve()
return self._frame
#设置只读属性
@property
def isWritingImage(self):
return self._imageFilename is not None
#设置只读属性
@property
def isWritingVideo(self):
return self._videoFilename is not None
#启动摄像头录制功能
def enterFrame(self):
'''Capture the next frame,if any'''
#But first, check that any previous(之前的) frame was exited.
#assert:判断条件是否成立,成立继续运行程序,不成立返回提醒值,程序中断
#assert True,'提醒条件'
#assert false,'提醒条件'
#判断之前的窗口是否存在,若存在报错
#self._enteredFrame-->False
assert not self._enteredFrame,'previous enterFrame() had no matching exitFrame()'
if self._capture is not None:#判断是否存在控制器
self._enteredFrame = self._capture.grab()#capture = cv2.VideoCapture(0),返回True值
#self._enteredFrame -->True
#VideoCapure里的read是grab和retrieve的结合,由下面的函数介绍可知grab是指向下一个帧,retrieve是解码并返回一个
# 帧,而且retrieve比grab慢一些,所以当不需要当前的帧或画面时,可以使用grab跳过,与其使用read更省时间。
# 因为有的时候缓冲区的画面是存在了延迟的。当不需要的时候可以多grab之后再read的话,就能比一直read更省时间,
# 因为没有必要把不需要的帧解码,由介绍可知也可以使用grab实现硬件同步。
#视频显示,视频录制,视频保存的功能
def exitFrame(self):
'''Draw to the window. Write to files. Release(释放) the frame'''
#Check whether any grabbed frame is retrievable
#The getter may retrieve and cache the frame
print(4,' ',self._frame is None)
if self._frame is None:
self._enteredFrame = False#_enteredFrame为False时,为第一次抓取视屏信息,采用grab()方式
#为True时为非第一次抓取,采用retrieve方式抓取
return
#计算fps
#Update the FPS estimate and related variables
#使用帧数/时间得到每秒的帧数
if self._framesElapsed == 0:
self._startTime = time.time()
else:
timeElapsed = time.time() - self._startTime
self._fpsEstimate = self._framesElapsed / timeElapsed
self._framesElapsed += 1
#显示图像
#Draw to the window, if any
if self.previewWindowManager is not None:
if self.shouldMirrorPreview:#控制是否镜像显示图像
#向左/右方向翻转阵列,翻转图像
mirroredFrame = np.fliplr(self._frame).copy()
self.previewWindowManager.show(mirroredFrame)#显示图像
else:
self.previewWindowManager.show(self._frame)#显示图像
#图片文件生成
#Write to the image file, if any
if self.isWritingImage:
cv2.imwrite(self._imageFilename, self._frame)
self._imageFilename = None
#录制文件生成
#Write to the video file ,if any.
self._writeVideoFrame()
#录像生成
#Release the frame
self._frame = None#将参数还原到循环初始状态
self._enteredFrame = False#将参数还原到循环初始状态
#设置图片文件名
def WriteImage(self, filename):
'''Write the next exited frame to an image file'''
self._imageFilename = filename
#开始录制
def startWritingVideo(self, filename, encoding = cv2.VideoWriter_fourcc('I','4','2','0')):
'''Start writing exited frames to a video file.'''
self._videoFilename = filename
self._videoEncoding = encoding
#停止录制
def stopWritingVideo(self):
'''Stop writing exited frames to a video file'''
self._videoFilename = None
self._videoEncoding = None
self._videoWriter = None
#录制视频
def _writeVideoFrame(self):
if not self.isWritingVideo:#控制是否为保存视频
return
if self._videoWriter is None:#如果视频保存方式无定义
fps = self._capture.get(cv2.CAP_PROP_FPS)#获取fps
if fps == 0.0:#如果未获取到fps
#The capture's FPS is unknown so use an estimate.
if self._framesElapsed<20:#如果现有帧数小于20,无法计算直接退出子程序
#Wait until more frames elapse so that the estimate is more stable
return
else:
fps = self._fpsEstimate
size = (int(self._capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(self._capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
#创建videoWriter
self._videoWriter = cv2.VideoWriter(
self._videoFilename, self._videoEncoding, fps, size)
#写入视频
self._videoWriter.write(self._frame)
#创建界面管理类
#使应用程序代码能以面向对象的形式处理窗口的事件
class WindowManager(object):
def __init__(self,windowName, keypressCallback = None):
self.keypressCallback = keypressCallback#实现按键控制功能
self._windowName = windowName#在cameo.py中实例化为'Cameo'
self._isWindowCreated = False#控制是否循环提取摄像头信息
@property
def isWindowCreated(self):#作为窗口是否存在的判别条件,self._isWindowCreated在createWindow中已修改为True
return self._isWindowCreated
#创建窗口
def createWindow(self):
cv2.namedWindow(self._windowName)#创建视屏窗口
self._isWindowCreated = True#修改类属性,说明已经创建窗口,为Ture
#显示窗口
def show(self, frame):
cv2.imshow(self._windowName, frame)
#注销窗口
def destroyWindow(self):
cv2.destroyWindow(self._windowName)
self._isWindowCreated = False
#执行键盘操作的回调函数
def processEvent(self):
keycode = cv2.waitKey(1)#等待1微秒获取键盘输入信息
if self.keypressCallback is not None and keycode != -1:#如果编辑了外界设备输入程序且输入不为0
#Discard any non-ASCII info encoded by GTK
keycode &= 0xFF#使用GTK进行编码
self.keypressCallback(keycode)
cameo.py
import cv2
from managers import WindowManager, Capturemanager
class Cameo(object):
def __init__(self):
#创建一个窗口,并将键盘的回调函数传入
self._windowManager = WindowManager('Cameo', self.onKeypress)
#告诉程序数据来自摄像头,还有镜面效果
self._captureManager = Capturemanager(
cv2.VideoCapture(0), self._windowManager, True
)
def run(self):
'''Run the main loop'''
self._windowManager.createWindow()#创建窗口,设置self._isWindowCreated = True控制循环提取摄像头信息
while self._windowManager.isWindowCreated:
#这里的enterFrame作用使得从程序从摄像头中取数据
self._captureManager.enterFrame()#开启窗口
#frame是原始帧数据,未做任何改动
frame = self._captureManager.frame#获得当前帧
#TODO: filter the frame(Chapter 3)
#exitFrame()主要功能:实现截屏,录屏
self._captureManager.exitFrame()#根据控制参数,选择是否进行截屏和录屏,并将self._frame等参数还原准备下一次循环
#回调函数
self._windowManager.processEvent()
def onKeypress(self, keycode):
'''Handle a keypress
space -> Take a screenshot
tab -> State/stop recording a screencast
escape -> Quit
'''
if keycode == 32: #Space
#截取保存的文件名称
self._captureManager.WriteImage('screenshot.png')#设置截取图片保存信息
elif keycode == 9:#tab
if not self._captureManager.isWritingVideo:#判断为开始录制视频或结束录制视频
#录像保存的文件名字
self._captureManager.startWritingVideo(
'screencast.avi'
)
else:
self._captureManager.stopWritingVideo()
elif keycode == 27: #escape
self._windowManager.destroyWindow()
if __name__ == '__main__':
Cameo().run()
opencv计算机视觉学习笔记二
12-13 阅读数 1867
第二章Opencv3处理图像 1不同色彩空间的转换计算机视觉中三种常见的色彩空间:灰度BGRHSV(hue色调saturation饱合度value黑暗程度)2傅里叶变换快速傅里叶变换fft离散傅里叶变... 博文 来自: retacn_yue的专栏
OpenCV3计算机视觉Python语言实现(二):处理文件、摄像头和图形用户界面
07-13 阅读数 1466
安装从网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载opencv-whl文件pipinstallwheelpipinstall****.w... 博文 来自: NoBug,Perfect
OpenCV计算机视觉(Python实现)-2:Cameo项目
07-09 阅读数 535
Cameo项目managers.py#使用managers.CaptureManager提取视频流importnumpyimportcv2importtime#增加要导入的包、构造函数和属性值clas... 博文 来自: 故沉的博客
Python 使用Opencv实现cameo功能
05-23 阅读数 652
欢迎加入学习交流QQ群:657341423文件temp.py,实现类WindowManager和CaptureManagerimportcv2importnumpyimporttime#视频图像管理类... 博文 来自: XyJw的博客
【OpenCV】Cameo
07-03 阅读数 368
2018-7-3好几天没来了,上周五按照书中程序,手打一份代码跑了一下,今天分析总结一下。实现的功能:1、从摄像头读取视频流,将其在窗口中实时显示2、使用键盘按键可以实现截图、录取视频、退出的功能首先... 博文 来自: alvin93的博客
OpenCV3计算机视觉 Python实现 ——cameo项目
11-20 阅读数 212
我按照书上程序写完,运行程序,其cameo窗口总是闪退为什么?感觉自己对程序没有理解好,求大神解释一番managers.py cameo.py importcv2importnumpyimportt... 博文 来自: yan_520csdn的博客
matplotlib中,使用Event编码的学习步骤
01-07 阅读数 131
第一步:https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-p... 博文 来自: jialiangyue的博客
类库-cameo 详解
03-20 阅读数 18
转载:https://blog.csdn.net/u013631121/article/details/80412111 博文 来自: Serizawa_Tamao的博客
将摄像头数据显示在窗口中并具有录像、截屏功能
07-26 阅读数 1079
先前写过两个读取摄像头数据的小Demo复习内容:OpenCV获取摄像头数据并显示在窗口里Python实现从摄像头中读取数据并写入文件... 博文 来自: kingroc的博客
linux 安装php7.1
02-10 阅读数 2007
http://www.jb51.net/article/83466.htmPHP(超文本预处理器)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于We... 博文 来自: iiiiiiiiiiii9的专栏
OpenCV3计算机视觉:Python语言实现 chaper2_cameo.py(树莓派)
04-07 阅读数 315
这是OpenCV3计算机视觉:Python语言实现chaper2中最后一节的cameo.py示例自己手打了一段就忍不住搜索现成的代码了首先搜索到这篇博文:用python实现opencv照书上的代码打进... 博文 来自: xiangyunLLLLLL的专栏
opencv计算机视觉学习笔记一
12-13 阅读数 1661
第二章处理文件摄像头和图形用户界面1基本i/o脚本读写图像文件示例代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time :2016/11/2712:... 博文 来自: retacn_yue的专栏
CAMEO编码表
03-26《OpenCV 3计算机视觉:Python语言实现》(原书第2版)读后感
06-02 阅读数 3104
最近跟Python和Opencv干上了,于是买了几本书,渴求能够快速从中得到提升。其中的一本书就是《OpenCV3计算机视觉:Python语言实现》(原书第2版)。首先,先说一下这本书的优点:1.结合... 博文 来自: jjddss的专栏
数字图像处理笔记(一):利用OpenCV的Cameo框架搭建实验环境
12-06 阅读数 68
1-引言Python的应用程序可以通过面向对象的方法来实现,OpenCV提供了一个Cameo框架可以捕捉电脑的摄像头。我们可以通过编写添加框架里的类和方法来对摄像头捕捉到的画面进行图像处理和实验,是一... 博文 来自: HHH_ANS的博客
白话文讲计算机视觉-第六讲-轮廓检测算法
05-30 阅读数 993
大家好,欢迎收听小木的第六讲,第六讲我们主要讲的内容是轮廓检测。说道轮廓检测。轮廓怎么检测呢,那么我们就要引入一个轮廓检测算法:这个算法是日本的铃木桑发明的。这位日本人写了一篇论文,叫做:Topolo... 博文 来自: 牟天蔚的博客
白话文讲计算机视觉-第二讲-cameo类库
05-22 阅读数 373
上一讲小木我讲解了图片的读取,保存。视频的读取、保存、以及如何调用摄像头。这节课我们要将这些东西给合而为一。怎么合而为一呢,美国的天才,也就是《OPENCV3计算机视觉PYTHON语言实现》这本书的作... 博文 来自: 牟天蔚的博客
Cameo的实
09-28 阅读数 36
今天在学习cameo的时候,遇到了两个问题,在这里记录一下,如果你在学习的过程中也遇到了这种问题,希望能够帮助到你。首先感谢alvin93,网址是https://blog.csdn.net/alvin... 博文 来自: qq_38203234的博客
opencv3计算机视觉Python语言实现(原书第二版)第三章3.6节缺少BGRPortraCurveFilter()函数
11-20 阅读数 648
3.6节中的对cameo.py的修改中,突然出现了filters.BGRPortraCurveFilter()让人措手不及。。。前面并没有写这个函数,后面也没有,查看原书英文版发现原书就是这样,坑啊,... 博文 来自: qq_34877350的博客
opencv3计算机视觉python语言实现(第二版)乔-米尼奇诺著(高清带目录PDF书籍+书中所用全部源码)
10-20OpenCV3计算机视觉Python语言实现笔记(一)
07-29 阅读数 440
ython3下OpenCV的安装:http://blog.csdn.net/lwplwf/article/details/616164931.读/写图像文件 OpenCV的imread()函数和im... 博文 来自: 白头码客
zebra最新条码驱动
12-25深度学习(DL)与卷积神经网络(CNN)学习随笔-05-基于Python的LeNet之CNN
10-07 阅读数 7783
本文原链接可以查看更多文章 博文01介绍了CNN的基本结构。博文02、03、04依次介绍了卷积操作、LR模型的建立及实现,MLP模型及实现。这些都是作为实现LeNet的铺垫。因为LeNet的实现... 博文 来自: 啸林
推荐算法--基于物品协同过滤算法实现(python: Item-CF)
05-20 阅读数 1825
1.背景本次测试基于MovieLens数据集实现的基于物品的协同过滤,目前只是在小样本上实现,主要问题是计算太耗内存,后期代码继续优化与完善。数据集说明:movies.dat中数据是用户对电影的评分。... 博文 来自: zhouwenyuan1015的博客
机器学习经典算法详解及Python实现--基于SMO的SVM分类器
12-01 阅读数 2万+
支持向量机基本上是最好的有监督学习算法,因其英文名为supportvectormachine,简称SVM。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便... 博文 来自: Adan
python初级教程详解
07-23scikit-learn 结合PCA和SVM实现人脸识别
09-13 阅读数 315
准备数据集%matplotlibinlineimportmatplotlib.pyplotaspltimportnumpyasnpimporttimeimportloggingfromsklearn.... 博文 来自: szfhy的博客
Python基于SMTP协议发送邮件
05-31 阅读数 313
#!/usr/bin/envpython#-*-coding:utf-8-*-&quot;&quot;&quot;@Time:2018/5/31@Aut... 博文 来自: CarolLiu的博客
深度学习入门:基于Python的理论与实现
12-07item-based CF(基于物品的协同过滤算法)
12-07 阅读数 80
#!/usr/bin/envpython#-*-coding:utf-8-*-"""item_basedCF"""importnumpyas... 博文 来自: qq_21944445的博客
基于物品的协同过滤算法itemCF原理及python代码实现
02-21 阅读数 8506
文章是基于物品的协同过滤算法itemCF原理及python代码实现,其中的文件包含MovieLens数据集中的ml-100k数据集,开发环境是Python2.7.代码是我按照《推荐系统实践》里面的公式... 博文 来自: Flying_sfeng的博客
再来20 个免费的Bootstrap 的后台管理模板
01-09 阅读数 51
强大的BootStrap相信大家都用过,下面介绍开源后台框架,让大家打开眼界BracketResponsiveBootstrap3AdminTemplateApricotBootstrap3Admin... 博文 来自: jw2015_8的博客
基于Django框架开发的纯Python web 登录功能小项目实践
09-24python基于mysql实现的简单队列以及跨进程锁
05-09 阅读数 857
在我们做多进程应用开发的过程中,难免会遇到多个进程访问同一个资源(临界资源)的状况,必须通过加一个全局性的锁,来实现资源的同步访问(同一时间只能有一个进程访问资源)。... 博文 来自: Dreaming
[分享] Python实现的基于深度学习的手写数字识别算法
11-27 阅读数 204
本文将采用深度学习中的卷积神经网络来训练手写数字识别模型。使用卷积神经网络建立合理的模型结构,利用卷积层中设定一定数目的卷积核(即滤波器),通过训练数据使模型学习到能够反映出十个不同手写提数字特征的卷... 博文 来自: demongwc的博客
绿色的Cameo响应式后台管理模板
05-10深入详解python传值问题及内存管理机制
09-12 阅读数 4453
python中到底是“传引用”还是“传值”呢??? 这个问题的回答是:看情况。有的是传值,有的是传引用。 判断的依据是看对象的可变性,而这一点又取决于对象的类型。故在python中... 博文 来自: zhangweijiqn的专栏
基于Python+Theano实现的Lenet5源代码(附详细注释)
10-10《21个项目玩转深度学习:基于TensorFlow的实践详解》.pdf
07-30python爬虫-selenium详解
05-28《21个项目玩转深度学习:基于Tensorflow的实践详解》高清完整版
08-14分水岭算法的原理及Openc实现
01-21 阅读数 730
分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线。 下面左边的灰度图,可以描述为右边的地形图,地形的高度是由... 博文 来自: linqianbi的博客
基于卷积神经网络的手写数字识别python代码实现
04-20基本蚁群算法python实现
02-01深度学习入门:基于Python的理论与实现_高清+源代码
12-03基于Python网络日志分析系统研究与实现
06-07基于Python的混合语言编程及其实现.pdf
09-12Python网络爬虫的设计及实现
07-08详解冒泡排序及Python3代码实现
08-14 阅读数 5445
下面详细介绍冒泡排序的思想以及python3代码实现。首先是这样一个常识:在水中两个相同深度的气泡,大的气泡上浮的快,最先上浮到水面。然后假设有一个列表保存着一组数据,如下所示:左端为里表中的元素,右... 博文 来自: Allen Liu
架构师日记——基于redis的分布式锁实现
01-06 阅读数 1270
很久之前有讲过并发编程中的锁并发编程的锁机制:synchronized和lock。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消... 博文 来自: 饥渴计科极客杰铿的博客
只狼破解版|只狼影逝二度破解版 免费分享
03-26 阅读数 477
只狼影逝二度是由FROM SOFTWARE精心研发,方块游戏代理的一款第三人称动作冒险3A单机大作,于19年3月发售,简称为只狼,本作一经发售便广受好评,并且支持PS4、Xbox、PC三个版本,支持简... 博文 来自: ygl19961996的博客
Android 基于Message的进程间通信 Messenger完全解析
07-23 阅读数 7万+
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46858663; 本文出自:【张鸿洋的博客】 一、概述说到Andro... 博文 来自: Hongyang
QT选择目录等常用文件/文件夹操作
01-09 阅读数 1万+
QT 创建文件夹 bool QDir::mkdir ( const QString & dirName ) const 创建一个子目录名为目录名。[喝小酒的网摘]http://blog.... 博文 来自: K7的专栏
三菱FX系列PLC与PC通讯的实现之专有协议(计算机联接)的程序设计之一
02-11 阅读数 9330
阅读内容为:FX系列微型可编程控制器用户手册(通讯篇)中计算机链接功能章节。 采用本方法通信,pc端的实现,其实就是,把操作按照协议(2种)翻译成相应的字符串,通过串口发送给plc。 编写一应用程... 博文 来自: pengjc2001的博客
【小程序】微信小程序开发实践
11-07 阅读数 24万+
帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账... 博文 来自: 小雨同学的技术博客
linux下 nexus搭建maven私有库 自动打包
07-02 阅读数 1万+
linux下nexus搭建maven私有库自动打包 首先需要安装nexus:http://www.sonatype.org/nexus/go/ 如上图所示 执行命令解压tar包tar... 博文 来自: 尽心篇
Android Studio 下debug情况下直接使用release的签名
04-28 阅读数 1万+
转载请标明出处(请勿转载删除底部微博、微信等信息): http://blog.csdn.net/Y1258429182/article/details/51265160 本文出自:杨哲... 博文 来自: 杨哲丶的专栏
微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用
02-02 阅读数 14万+
扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,... 博文 来自: Marswill
linux上安装Docker(非常简单的安装方法)
06-29 阅读数 18万+
最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量... 博文 来自: 我走小路的博客
iOS app各种图片尺寸(Icon,Launchimg,应用市场)
04-21 阅读数 2428
iOS 各种图片尺寸 博文 来自: 袭明君的专栏
ApacheActiveMQ安装必要条件
05-03 阅读数 2605
ApacheActiveMQ安装必要条件 博文 来自: 业精于勤-行成于思
Java中BIO、NIO和AIO的区别和应用场景
04-21 阅读数 1万+
最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的《Netty权威指南》,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在把我总结的关于BIO、NIO和AIO的区... 博文 来自: 我的编程世界
机器视觉学习笔记(6)——双目摄像机标定参数说明
12-28 阅读数 1万+
机器视觉学习笔记(6)——双目摄像机标定参数说明标签: 机器视觉阅读本文之前请先阅读以下两篇博文: 机器视觉学习笔记(4)——单目摄像机标定参数说明 机器视觉学习笔记(5)——基于OpenCV的单... 博文 来自: moverzp的博客
Java设计模式18——状态模式
11-16 阅读数 7369
一、定义状态(State)模式又称为状态对象模式(Pattern of Objects for State),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变时改变其行为,用于解决系统中... 博文 来自: 小小本科生成长之路
ODAC (odp.net) 从开发到部署
09-30 阅读数 1万+
test 博文 来自: 我想我是海 冬天的大海 心情随风轻摆
ThreadLocal的设计理念与作用
09-25 阅读数 5万+
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread... 博文 来自: u011860731的专栏
配置简单功能强大的excel工具类搞定excel导入导出工具类(一)
09-22 阅读数 4万+
对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象. 请看一下这个类都有哪些功能: ... 博文 来自: 李坤 大米时代 第五期
关于SpringBoot bean无法注入的问题(与文件包位置有关)
12-16 阅读数 15万+
问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 博文 来自: 开发随笔
vs2012 MFC连接及操作access(2007)数据库(ADO)
07-06 阅读数 1万+
最近想写个图书管理软件,用到了数据库,但是由于是小白,弄了好半天才把数据库搞明白。虽然网上有一些教程,但大多都是长长的文字叙述,所以想写一个图文版的连接教程并把这两天的经验记录下来。 1、首先打开ac... 博文 来自: u012784288的博客
连续特征离散化和归一化
06-25 阅读数 2万+
连续特征进行离散化处理。 博文 来自: hero_fantao的专栏
开源Json解析器的浅述
11-17 阅读数 3170
之前在做项目中,Json 这种数据转换格式经常用,为什么呢?我认为是 1、它的易用性,跨平台性,它是JS(JavaScript)的子集,是一种对象字面量。 2、它与XML都是树结构的语法树; 同... 博文 来自: qq_34417408的博客
DirectX修复工具增强版
02-09 阅读数 189万+
最后更新:2018-12-20 DirectX修复工具最新版:DirectX Repair V3.8 增强版 NEW! 版本号:V3.8.0.11638 大小: 107MB/7z格式压缩,18... 博文 来自: VBcom的专栏
强连通分量及缩点tarjan算法解析
11-16 阅读数 55万+
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量 使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点) 定义: int Ti... 博文 来自: 九野的博客
如何用VFP判断文本文件的编码格式?
02-20 阅读数 4685
*--文本文件的编码格式手动查看方法:*--用记事本打开文本后,点击菜单上的“另存为”,编码格式在出现的对话框下方。*--那用VFP如何取得文本文件的编码格式呢,如下:lcFileName=C:/A.... 博文 来自: apple_8180(十豆三) 的专栏
centos 查看命令源码
11-19 阅读数 6万+
# yum install yum-utils 设置源: [base-src] name=CentOS-5.4 - Base src - baseurl=http://vault.ce... 博文 来自: linux/unix
Android隐藏app应用图标
07-23 阅读数 1万+
原本是闲来无事,浏览博客,看到用浏览器地址打开app的文章, 按照文中所述尝试以后,发现app的应用图标居然在桌面不显示了。 只需在下面的代码中,修改即可。 ... 博文 来自: 爱孔孟
微信小程序(七):仿找事吧APP附近三公里Demo
11-16 阅读数 8412
功能点:轮播;列表,下拉刷新上拉加载更多;地图;网络请求;数据绑定等 文本仿照了 找事吧app 附近三公里功能,并感谢找事吧数据的提供。考虑到数据的私密性,本文贴出的代码并没有贴出请求URL,敬... 博文 来自: 阿东
expat介绍文档翻译
03-22 阅读数 3万+
原文地址:http://www.xml.com/pub/a/1999/09/expat/index.html 因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能... 博文 来自: ymj7150697的专栏
执行转换时如何让Kettle记录错误并继续执行?——记一种解决方案
05-13 阅读数 2万+
如题,近几天在利用Kettle进行数据迁移的工作(也就是把数据全量导入到新数据库中,其中有些字段有些许调整),在写好脚本并执行后发现一个很严重的问题——每次脚本在执行到某个位置的时候就会意外停止,如下... 博文 来自: Amour
selenium之 定位以及切换frame(iframe)
08-13 阅读数 8万+
很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可... 博文 来自: 灰蓝
Hadoop+HBase完全分布式安装
01-10 阅读数 1604
记录下完全分布式HBase数据库安装步骤准备3台机器:10.202.7.191 / 10.202.7.139 / 10.202.9.89所需准备的Jar包: jdk-7u65-linux-x64.ta... 博文 来自: Dobbin
信息检索数据集
12-14 阅读数 1022
转自:http://blog.csdn.net/liuheng0111/article/details/72772922 INRIA Holidays INRIA Holidays dat... 博文 来自: LeeWei4939的博客
opencv3计算机视觉Python语言实现(原书第二版)第三章3...._CSDN博客
11-9
3.6节中的对cameo.py的修改中,突然出现了filters.BGRPortraCurveFilter()让人措...基于Python的Cameo实现详解- weixin_41700557的博客 09-17 46 以下内容为学习...
Python 使用Opencv实现cameo功能 - XyJw的博客 - CSDN博客
10-30
边缘检测,肖像胶卷色彩cameo.py/filters.py/utils.py文件内容,基于python2.7,IDE...来自: weixin_38866861的博客 VideoCapture之grab()和retrieve() 05-04 4122...
...Python实现 ——cameo项目 - yan_520csdn的博客 - CSDN博客...
11-20
3.6节中的对cameo.py的修改中,突然出现了filters.BGRPortraCurveFilter()让人措...基于Python的Cameo实现详解 - weixin_41700557的博客 09-17 64 以下内容为学习...
【初学Python】关于python实现Cameo对视频的截取和录制..._CSDN博客
10-17
学习《OpenCV3计算机视觉,Python语言实现》时读书笔记。 最近对计算机视觉产生了浓厚的兴趣,又刚好在学校的图书馆看到了这本书,那可刚好满足了我的兴趣,今天先敲一...
【OpenCV】Cameo - alvin93的博客 - CSDN博客
10-30
基于Python的Cameo实现详解 09-17 33 以下内容为学习<OpenCV 3计算机...来自: weixin_41700557的博客 今天和大家讲一下WindowManager这个类,这个类就是...
OpenCV计算机视觉(Python实现)-2:Cameo项目 - 故沉的博..._CSDN博客
10-27
基于Python的Cameo实现详解 09-17 32 以下内容为学习<OpenCV 3计算机...同时参考了文章:Python 使用Opencv实现ca... 来自: weixin_41700557的博客 ...
没有更多推荐了,返回首页