matx.h matx类是opencv中的一个基础类,其位于core模块中,所执行的操作时opencv矩阵和向量的运算.如果熟悉基于matlab的图像处理,那么很容易想到,所有对图像的操作归根结底都是对矩阵的操作.尽管matx类不是opencv最基础的类,但是我认为以此进入图像处理学习和熟悉c++程序是合适的. 1.头文件和基础 #ifndef __OPENCV_CORE_MATX_HPP__ #define __OPENCV_CORE_MATX_HPP__ #ifndef __cplusplu…
在.h文件里定义类,可以通过内联函数的方法完成类基础函数的实现,这样就不需要额外写.cpp文件来写类的内容. 对于操作符重载,可以使用返回应用的方式减小内存开销 _Tp& someclass::operator +(_Tp &a,_Tp &n){return a;} 这样返回的就是a的引用. 常成员函数对类的成员变量只有访问权,而没有修改权.如果不涉及成员变量的修改,可以使用常成员函数来保护数据. static成员函数只能访问static成员,因为它没有this指针.同时因为没有t…
外部矩阵计算函数 namespace internal { template<typename _Tp, int m> struct Matx_DetOp { double operator ()(const Matx<_Tp, m, m>& a) const { Matx<_Tp, m, m> temp = a; double p = LU(temp.val, m*sizeof(_Tp), m, 0, 0, 0); if( p == 0 ) return p;…
本文为作者原创,未经允许不得转载:原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5387743.html 在ios下开发基于opencv的程序时经常会用到两条接口,分别是UIImageToMat()和MatToUIImage(),这两条接口是UIImage与Mat之间的转换.关于这两条api的信息opencv文档里面没有给出太多的信息,所以,需要通过阅读源码来分析. 1.UIImageToMat的细节 关于这条api,我们总想知道返回的mat…
base.h处于core模块中,是OpenCV的核心类.其作用是定义了OpenCV的基本错误类型,在程序运行出现错误是抛出错误,防止数据溢出.总而言之,其功能主要是考虑程序的健壮性. 头文件 #ifndef __OPENCV_CORE_BASE_HPP__ #define __OPENCV_CORE_BASE_HPP__ #ifndef __cplusplus # error base.hpp header must be compiled as C++ #endif #include <cli…
1.赋值构造函数 右值引用 inline Mat& Mat::operator = (Mat&& m) { if (this == &m) return *this; release(); flags = m.flags; dims = m.dims; rows = m.rows; cols = m.cols; data = m.data; datastart = m.datastart; dataend = m.dataend; datalimit = m.datalim…
AbstractStringBuilder abstract class AbstractStringBuilder implements Appendable, CharSequence{ ... } 1. inflate方法 inflate()方法可以将当前的Latin1编码的字符串膨胀到16位,即UTF16编码(Latin1编码为8位) /** * If the coder is "isLatin1", this inflates the internal 8-bit stora…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 哈希表的增删查改 这是BasicHashTable基本哈希表类源码分析的最后一个部分,即哈希表的基本操作方法.这里时间没有直接给出修改条目的方法,因为它包含在了add方法中. Add方法(增加条目) Add方法先…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso BasicHashTable的辅助方法 这里介绍的是一些用来对哈希表进行一些基本的哈希操作的函数. randomIndex(uintptr_t i) const方法 randomIndex(uintptr_t i…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso BasicHashTable基本哈希表类 这个类搞的很复杂,实质上没什么东西,就是很难看. 先画一个简图 先说说这个BasicHashTable的设计吧. 这个表的内部嵌套定义了一个TableEntry(表条目)…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso HashTable抽象哈希表类 HashTable类内部嵌套定义了一个迭代器类Iterator,这个迭代器类用于循环访问表的成员.这也是一个抽象类,但是其有一个静态的方法static Iterator* crea…
12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 哈希表相关类综述 哈希表相关类一个有两个,HashTable和BasicHashTable.HashTable是BasicHashTable的派生类.…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso AlarmHandler定时处理类 这个类定义在live555sourcecontrol\BasicUsageEnvironment\BasicTaskScheduler0.cpp文件中. AlarmHandle…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso DelayQueue 延时队列类 这个类的设计不是很复杂,但是要清楚的知道其设计的思路.先给个图 10_DelayQueue.png 这个链表的设计和前面不一样.其内部只有一个EventTime fLastSyncTime最后…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ DelayQueueEntry 延时队列节点类 entry的意思如下 entry n.进入,入场; 入口处,门口; 登记,记录; 参加比赛的人; 为什么说是节点类呢?这个通过阅读代码就可以知道了. DelayQueueEntry类含有四个数据成员,其中fNext和fPrev说明了其是一个链表的节…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 延时队列相关类 延时队列相关类一共有两个,DelayQueue(延时队列)和DelayQueueEntry(延时队列节点).后面说到任务调度器(TaskScheduler)的时候会使用到. DelayQueue是DelayQueueEntry的派生类,同时也是它的友元类.其定义在live555s…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso HandlerSet 处理程序链表类 这里使用的Set这个单词,Set是集合的意思,这里实质上是一个双向循环链表.这个类比较重要,这里会详细的介绍. HandlerSet类只有一个数据成员,就是HandlerDescriptor fHandlers;这是作为链表的头结点而存在的. HandlerSet的定义,代码…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ HandlerDescriptor 处理程序描述类 HandlerDescriptor类是一个很重要的类,其保存了处理程序的函数指针和相关的数据的地址.在构建处理任务的时候,会使用到这个类的对象,处理任务的时候也会用到. HandlerDescriptor类同时将HandlerIterator类…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso HandlerIterator处理程序迭代器类 这里本应该先介绍HandlerDescriptor类的,因为这个类与它的关联比较大,就先介绍这个类. HandlerIterator是一个迭代器类,其有两个数据成员,分别是HandlerSet类对象的引用fOurSet,以及一个HandlerDescriptor对象…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. Handler相关类概述 处理程序相关类一共有三个,其没有派生继承关系,但是其有友元关系和使用关系.处理程序相关类主要是用于对相关的处理函数的指针和数据的包装,方便在DelayQueue相关类中的使用等. 先来总的说以下三个类的关系. HandlerDescriptor是一个节点类,而HandlerSet是一个链表类,链表节点就是HandlerDescriptor对象.HandlerIterat…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第三个部分,也是最后一个部分. EventTime 事件时间类 这个类和DelayInterval类的是类似的,就是其构造函数默认参数是0. class EventTime: public Timeval { public: EventTime(unsigned secondsSinceEpoch = 0, unsigned usecondsSinceEpoch = 0) //…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第二个部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ DelayInterval延时间隔类 DelayInterval这个类只是为了在名字上方便使用.我们可以看上面的TimeVal类,其带参构造函数是protected权限的,这里的定义就是暴露了一个构造接口,方便使用. class DelayInterval: pu…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第一个部分. TimeVal类 TimeVal类定义在live555sourcecontrol\BasicUsageEnvironment\include\DelayQueue.hh文件中.其实质上是对struct timeval的封装. 先来看看TimeVal类的组成. 其只有一个数据成员,就是一个timeval的结构体fTv.TimeVal类封装的所有方法都是对其的操作.…
本文转载自JDK源码阅读-DirectByteBuffer 导语 在文章JDK源码阅读-ByteBuffer中,我们学习了ByteBuffer的设计.但是他是一个抽象类,真正的实现分为两类:HeapByteBuffer与DirectByteBuffer.HeapByteBuffer是堆内ByteBuffer,使用byte[]存储数据,是对数组的封装,比较简单.DirectByteBuffer是堆外ByteBuffer,直接使用堆外内存空间存储数据,是NIO高性能的核心设计之一.本文来分析一下Di…
caffe-windows中classification.cpp的源码阅读 命令格式: usage: classification string(模型描述文件net.prototxt) string(模型权值文件network.caffemodel) string(图像均值文件mean.binaryproto) string(图像类别标签信息 labels.txt) string(输入待分类图像img.jpg) 为什么要对图像进行均值处理?(参考) 数据预处理在深度学习中非常重要,数据预处理中,…
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比如FMDB的executeUpdate:系列方法.数据库的加解密等等.这次写的就是对FMDatabase和FMResultSet这两个文件的补全内容.每次写这种补全的内容最头疼,内容会很分散,感觉没啥条理. 2. executeUpdate:系列函数 注意除了"SELECT"语句外,其他的…
explode和implode函数主要用作字符串和数组间转换的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符合并成一个字符串输出.在PHP中经常会用到这两个函数,因此有必要了解一下其原理. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. explode array explode ( string $delimiter, string $string, [ , $l…
[原]SDWebImage源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 前面的代码并没有特意去讲SDWebImage的缓存机制,主要是想单独开一章节专门讲解缓存.之前我们也遇到一些缓存的属性和方法,比如storeImage.queryDiskCacheForKey.memCache等等. SDWebImage的缓存分为两个部分,一个内存缓存,使用NSCache实现,另一个就是硬盘缓存(disk),使用NSFileManager实现. 不过这么多函数,…
[原]SDWebImage源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1.SDWebImageDownloader中的downloadImageWithURL 我们来到SDWebImageDownloader.m文件中,找到downloadImageWithURL函数.发现代码不是很长,那就一行行读.毕竟这个函数大概做什么我们是知道的.这个函数大概就是创建了一个SDWebImageSownloader的异步下载器,根据给定的URL下载image. 先映入眼帘的…
[原]SDWebImage源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 一直没有系统地读过整套源码,就感觉像一直看零碎的知识点,没有系统读过一本专业经典书籍一样,会有点发虚,感觉知识体系不健全!废话少说,这次我决定好好阅读下SDWebImage的源码,我的阅读方式,是带着问题去阅读源码,然后强迫自己写博客. 2. SDWebImage是做什么的? 既然是要带着问题读,那么第一个问题就来了,SDWebImage是做什么的?SDWebImage是一个开源…