自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lingfengliujian的博客

水硕的点滴

  • 博客(20)
  • 资源 (59)
  • 收藏
  • 关注

原创 regEdit

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Folder\shell\HiGitBat]@=“HiGitBat”“Icon”=“D:\Work\projects\HiSourceGitBat\HiGitBat\x64\Release\HiGitBat.exe,0”[HKEY_CLASSES_ROOT\Folder\shell...

2019-05-26 14:21:48 810

原创 Linux 多线程编程—线程池 实现

Linux 多线程编程—线程池 实现1. 线程池介绍池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取得所需资源比动态分配资源的速度要快得多,因为分配系统资源的系统调用都是很耗时的。当服务器处理完一个客户连接后,可以把相关的资源放回池

2017-10-28 21:25:37 1416

转载 QT5提示can not find -lGL的解决方法

QT5提示can not find -lGL的解决方法这是由于 Qt5.0 默认将OpenGL加入了工程,但是在机器上没有安装OpenGL,所以jonas只需要在机器上安装OpenGL即可 。安装建立基本编译环境 首先不可或缺的,就是编译器与基本的函式库,如果系统没有安装的话,请依照下面的方式安装: $ sudo apt-get install build-essential 安装OpenGL

2017-10-23 15:05:41 1038

原创 使用MySQL数据库(ubuntu命令行终端+MySQL Workbench)

使用MySQL数据库(命令行+MySQL Workbench)登录到MySQL(1)命令行方式: 打开Ubuntu终端, 输入命令:mysql -h 主机名 -u 用户名 -p-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;-u : 所要登录的用户名;-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户

2017-10-22 21:34:36 6541

原创 MySQL 高性能编程学习(1)—架构与特性

MySQL的应用场景    Mysql具有高灵活性。应用于Web类应用,可嵌入到程序中,也可支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统等。   Mysql的灵活性在于:       通过配置使它在不同的硬件上运行,支持多种不同的数据结构   最大特性:       存储引擎架构。将查询处理(Query Processing)及其他系统任务(Se

2017-10-21 13:53:49 389

原创 ubuntu14.04 安装 mysql-workbench 6.2.5教程

ubuntu14.04 安装 mysql-workbench 6.2.51. 从mysql官网mysql workbench 下载下载deb程序包:—————mysql-workbench-community-6.2.5-1ubu1404-amd64.deb2. 拷贝至home目录下。3. sudo apt-get -f install, 最好再安装mysql-server,mysql-client

2017-10-20 22:39:15 677

原创 ubuntu 安装mysql 出现依赖性Depends错误

ubuntu 安装 mysql1. sudo apt-get update2. sudo apt-get install mysql-server mysql-client- 若出现如下错误,无法安装!!jianliu@ubuntu:~$ sudo apt-get install mysql-serverReading package lists... DoneBuilding depende

2017-10-20 22:25:26 6837

原创 Linux安装程序包之Unable to locate package错误 解决办法

在ubuntu系统下,利用apt-get install命令安装程序,出现如下问题。jianliu@ubuntu:~$ sudo apt-get install mysql-server mysql-clientReading package lists... DoneBuilding dependency tree Reading state information... Do

2017-10-20 21:06:08 63799 1

原创 #Linux Shell 脚本编程(10)—文本过滤(合并与分割—sort、uniq、join、cut、paste、split)

Linux Shell 脚本编程(10)—文本过滤(合并与分割—sort、uniq、join、cut、paste、split)文本过滤 正则表达式 —Linux Shell 脚本编程(5)—文本过滤(正则表达式) grep 命令 —Linux Shell 脚本编程(6)—文本过滤(grep命令) find命令 —Linux Shell 脚本编程(7)—文本过滤(find命令)

2017-10-19 21:09:27 732

原创 Linux Shell 脚本编程(9)—文本过滤(sed命令)

Linux Shell 脚本编程(9)—文本过滤(sed命令)文本过滤 正则表达式 —Linux Shell 脚本编程(5)—文本过滤(正则表达式) grep 命令 —Linux Shell 脚本编程(6)—文本过滤(grep命令) find命令 —Linux Shell 脚本编程(7)—文本过滤(find命令) awk命令 —Linux Shell 脚本编程(8)—文本过滤

2017-10-18 22:23:35 1298

原创 Linux Shell 脚本编程(8)—文本过滤(awk命令)

Linux Shell 脚本编程(8)—文本过滤(awk命令)文本过滤 正则表达式 —Linux Shell 脚本编程(5)—文本过滤(正则表达式) grep 命令 —Linux Shell 脚本编程(6)—文本过滤(grep命令) find命令 —Linux Shell 脚本编程(7)—文本过滤(find命令) awk命令 —Linux Shell 脚本编程(8)—文本过滤

2017-10-18 19:50:33 9706

原创 Linux Shell 脚本编程(7)—文本过滤(find命令)

Linux Shell 脚本编程(7)—文本过滤(find命令)文本过滤 正则表达式 [Linux Shell 脚本编程(5)—文本过滤(正则表达式)][1] grep 命令 Linux Shell 脚本编程(6)—文本过滤(grep命令) find awk sed 合并与分割(sort、uniq、join、cut、paste、split) find命令fin

2017-10-17 10:30:39 2050

原创 Linux Shell 脚本编程(6)—文本过滤(grep命令)

Linux Shell 脚本编程(5)—文本过滤(grep命令)文本过滤 正则表达式 Linux Shell 脚本编程(5)—文本过滤(正则表达式) grep 命令 Linux Shell 脚本编程(5)—文本过滤(grep命令) find awk sed 合并与分割(sort、uniq、join、cut、paste、split) grep命令概念:grep(

2017-10-16 22:55:07 4194

原创 Linux Shell 脚本编程(5)—文本过滤(正则表达式)

Linux Shell 脚本编程(5)—文本过滤(正则表达式)文本过滤 正则表达式 –Linux Shell 脚本编程(5)—文本过滤(正则表达式) grep 命令 –Linux Shell 脚本编程(6)—文本过滤(grep命令) find命令 –Linux Shell 脚本编程(7)—文本过滤(find命令) awk sed 合并与分割(sort、uniq、join

2017-10-10 21:57:12 6154

原创 Linux Shell 脚本编程(4)—控制流结构

shell控制流结构控制结构 if then else语句 case语句 until循环 while循环 break控制 confinue控制一、 流控制的目的#!/bin/bash#创建一个目录make /home/jianliu/shelltest/txt#复制所有txt文件到指定目录cp *.txt /home/jianliu/

2017-10-08 11:13:30 363

原创 Linux Shell 脚本编程(3)—Shell输入与输出

shell 输入与输出提纲: echo read cat 管道 tee 文件重定向 标准输入输出和错误 合并标准输出和标准错误 exec和使用文件描述符 文件重定向目标: 终端用户登录linux服务器,为每一个终端用户启动一个shell程序。1. ech

2017-10-07 22:03:10 3202

原创 Linux Shell 脚本编程(1)—Shell脚本基础知识

1.3 shell脚本  使用shell脚本的原因  功能强大 脚本文件后缀名为 .sh  节约时间  shell脚本基本格式(语法)!/bin/bash #(第一行是头,不是注释)shell脚本 #(这一行是注释!!!)mytext=”hello world” echo $mytext;注意初学者易犯错误: 1) 脚本文本头,第一

2017-10-07 21:29:51 517

原创 Linux Shell 脚本编程(2)—变量(本地变量&环境变量)和运算符

Shell变量及运算符一 Shell变量Shell变量最基本规则: 变量只有 字符串 和 整数 两种类型; 在shell运算中都是整数运算 或者 字符串操作运算。shell变量原由  为使用shell编程更加有效,系统提供了一些shell变量。shell变量可以保存注诸如路径名、文件名、或者数字这样的变量。从这一点上看,shell编程中,变量至关重要。1. 本地变量本地变量

2017-10-07 19:24:19 1959

原创 Linux 基础知识(2)—shell 简介

Shell 简介一 shell 家族shell:命令解释器,根据输入的命令执行相应命令。察看当前系统下有哪些shell: jianliu@ubuntu:~$ cat /etc/shells #/etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash察看当前系统正在使用

2017-10-07 17:05:04 267

转载 Linux 基础知识(1)—学习路线

Linux基础学习路线:

2017-09-29 21:46:19 358

基于Surf的Opencv全景图像拼接《Panoramic Image mosaic based on SURF algorithm using OpenCV》

Abstract— Panoramic image mosaic is a technology to match a series of images which are overlapped with each other. Panoramic image mosaics can be used for different applications. Image mosaic has important values in various applications such as photogrammetry, computer vision, remote sensing image processing, medical image analysis and computer graphics. Image mosaics also can be used in moving object detection with a dynamic camera. After getting the panoramic background of the video for detection, we can compare every frame in the video with the panoramic background, and finally detect the moving object. To build the image mosaic, SURF (Speeded Up Robust Feature) algorithm is used in feature detection and OpenCV is used in the programming.

2016-04-23

A Multiresolution Spline With Application to Image Mosaics 多分辨率图像融合

A Multiresolution Spline With Application to Image Mosaics PETER J. BURT and EDWARD H. ADELSON RCA David Sarnoff Research Center We define a multiresolution spline technique for combining two or more images into a larger image mosaic. In this procedure, the images to be splined are first decomposed into a set of band-pass filtered component images. Next, the component images in each spatial frequency hand are assembled into a corresponding bandpass mosaic. In this step, component images are joined using a weighted average within a transition zone which is proportional in size to the wave lengths represented in the band. Finally, these band-pass mosaic images are summed to obtain the desired image mosaic. In this way, the spline is matched to the scale of features within the images themselves. When coarse features occur near borders, these are blended gradually over a relatively large distance without blurring or otherwise degrading finer image details in the neighborhood of th e border. Categories and Subject Descriptors: I.3.3 [Computer Graphics]: Picture/Image Generation; I.4.3 [Image Processing]: Enhancement General Terms: Algorithms

2016-04-23

Automatic Panoramic Image Stitching using Invariant Features

Automatic Panoramic Image Stitching using Invariant Features MATTHEW BROWN∗ AND DAVID G. LOWE Department of Computer Science, University of British Columbia, Vancouver, Canada [email protected] [email protected] Received July 28, 2005; Accepted August 3, 2006 First online version published in December, 2006 Abstract. This paper concerns the problem of fully automated panoramic image stitching. Though the 1D problem (single axis of rotation) is well studied, 2D or multi-row stitching is more difficult. Previous approaches have used human input or restrictions on the image sequence in order to establish matching images. In this work, we formulate stitching as a multi-image matching problem, and use invariant local features to find matches between all of the images. Because of this our method is insensitive to the ordering, orientation, scale and illumination of the input images. It is also insensitive to noise images that are not part of a panorama, and can recognise multiple panoramas in an unordered image dataset. In addition to providing more detail, this paper extends our previous work in the area (Brown and Lowe, 2003) by introducing gain compensation and automatic straightening steps. Keywords: multi-image matching, stitching, recognition

2016-04-23

autostitch64 【全景图像自动拼接软件】多幅无序图像自动排序,配准,效果很好【BROWN和LOWE论文中给出的软件】

《Automatic Panoramic Image Stitching using Invariant Features》 MATTHEW BROWN∗ AND DAVID G. LOWE 给出的全景自动拼接软件,和论文相配套,特别好用!!!

2016-04-23

LearnOpenGL (特别适合入门,讲解细致,很透彻,资源描述里给出了对应的中文在线版,配合使用!!)

OpenGL学习教程,网站地址:http://learnopengl.com/ 对应中文在线:http://bullteacher.com/category/zh_learnopengl_com 1 介绍@ 2015-05-29 2 OpenGL@ 2015-05-29 3 创建一个窗口@ 2015-05-29 4 Hello Window@ 2015-05-29 5 Hello Triangle@ 2015-05-30 6 着色器@ 2015-05-30 7 纹理@ 2015-06-01 8 变换@ 2015-06-01 9 坐标系@ 2015-06-04 10 摄像机@ 2015-06-04 11 复习@ 2015-06-04 12 颜色@ 2015-06-04 13 光照基础@ 2015-06-04 14 材质@ 2015-06-04 15 光照贴图@ 2015-06-04 16 投光物@ 2015-06-04 17 多光源@ 2015-06-11 19 Assimp@ 2015-06-11 20 网格@ 2015-06-11 21 模型@ 2015-06-11 22 深度测试@ 2015-06-11 23 模板测试@ 2015-06-11 24 混合@ 2015-06-11 25 面剔除@ 2015-06-11 26 帧缓冲@ 2015-06-13 27 Cubemap@ 2015-06-13 28 高级数据@ 2015-06-13 29 高级GLSL@ 2015-06-21 30 几何着色器@ 2015-06-21 31 实例化@ 2015-06-21 32 反走样@ 2015-06-21 33 高级光照@ 2015-06-22 34 Gamma校正@ 2015-06-24 35 阴影映射@ 2015-06-25 36 点光源阴影@ 2015-06-26 37 法线贴图@ 2015-06-27 38 视差贴图@ 2015-06-28 39 HDR@ 2015-06-29 40 bloom@ 2015-07-01 41 延迟着色@ 2015-08-11

2016-04-22

基于图割的图像分割方法及其新进展_刘松

基于图割的图像分割方法及其新进展_刘松

2016-04-22

基于块匹配的图像拼接 源码,C++实现,完美运行,注释很详细

对于一组具有局部重叠区域的图像。采用块匹配的方法,设计运动估计方法,搜索相似部分,并进行匹配,融合生成拼接图。 【角点检测】->块的选择->块匹配->变换矩阵->融合

2016-04-21

Learning OpenCV 2nd Early Release 非常实用易懂的Opencv学习资料,C++实现

What Is OpenCV? OpenCV [OpenCV] is an open source (see http://opensource.org) computer vision library available from http://opencv.org. The library is written in C and C++1 and runs under Linux, Windows, Mac OS X, iOS, and Android. Interfaces are available for Python, Java, Ruby, Matlab, and other languages. OpenCV was designed for computational efficiency with a strong focus on real-time applications: optimizations were made at all levels, from algorithms to multicore and CPU instructions. For example, OpenCV supports optimizations for SSE, MMX, AVX, NEON, OpenMP, and TBB. If you desire further optimization on Intel architectures [Intel] for basic image processing, you can buy Intel’s Integrated Performance Primitives (IPP) libraries [IPP], which consist of low-level optimized routines in many different algorithmic areas. OpenCV automatically uses the appropriate instructions from IPP at runtime. The GPU module also provides CUDA-accelerated versions of many routines (for Nvidia GPUs) and OpenCL-optimized ones (for generic GPUs). One of OpenCV’s goals is to provide a simple-to-use computer vision infrastructure that helps people build fairly sophisticated vision applications quickly. The OpenCV library contains over 500 functions that span many areas, including factory product inspection, medical imaging, security, user interface, camera calibration, stereo vision, and robotics. Because computer vision and machine learning often go hand-in-hand, OpenCV also contains a full, general-purpose Machine Learning Library (MLL). This sub-library is focused on statistical pattern recognition and clustering. The MLL is highly useful for the vision tasks that are at the core of OpenCV’s mission, but it is general enough to be used for any machine learning problem. 1 The legacy C interface is still supported, and will remain so for the foreseeable future. Who Uses OpenCV? Most computer scientists and practical programmers are aware of some facet of the role that computer vision plays. But few people are aware of all the ways in which computer vision is used. For example, most people are somewhat aware of its use in surveillance, and many also know that it is increasingly being used for images and video on the Web. A few have seen some use of computer vision in game interfaces. Yet few people realize that most aerial and street-map images (such as in Google’s Street View) make heavy use of camera calibration and image stitching techniques. Some are aware of niche applications in safety monitoring, unmanned aerial vehicles, or biomedical analysis. But few are aware how pervasive machine vision has become in manufacturing: virtually everything that is mass-produced has been automatically inspected at some point using computer vision. The BSD [BSD] open source license for OpenCV has been structured such that you can build a commercial product using all or part of OpenCV. You are under no obligation to open-source your product or to return improvements to the public domain, though we hope you will. In part because of these liberal licensing terms, there is a large user community that includes people from major companies (Google, IBM, Intel, Microsoft, Nvidia, SONY, and Siemens, to name only a few) and research centers (such as Stanford, MIT, CMU, Cambridge, Georgia Tech and INRIA). OpenCV is also present on the web for users at http://opencv.org, a website that hosts documentation, developer information, and other community resources including links to compiled binaries for various platforms. For vision developers, code, development notes and links to GitHub are at http://code.opencv.org. User questions are answered at http://answers.opencv.org/questions/ but there is still the original Yahoo groups user forum at http://groups.yahoo.com/group/OpenCV; it has almost 50,000 members. OpenCV is popular around the world, with large user communities in China, Japan, Russia, Europe, and Israel. OpenCV has a Facebook page at https://www.facebook.com/opencvlibrary. Since its alpha release in January 1999, OpenCV has been used in many applications, products, and research efforts. These applications include stitching images together in satellite and web maps, image scan alignment, medical image noise reduction, object analysis, security and intrusion detection systems, automatic monitoring and safety systems, manufacturing inspection systems, camera calibration, military applications, and unmanned aerial, ground, and underwater vehicles. It has even been used in sound and music recognition, where vision recognition techniques are applied to sound spectrogram images. OpenCV was a key part of the vision system in the robot from Stanford, “Stanley”, which won the $2M DARPA Grand Challenge desert robot race [Thrun06], and continues to play an important part in other many robotics challenges. What Is Computer Vision? Computer vision2 is the transformation of data from 2D/3D stills or videos into either a decision or a new representation. All such transformations are done for achieving some particular goal. The input data may include some contextual information such as “the camera is mounted in a car” or “laser range finder indicates an object is 1 meter away”. The decision might be “there is a person in this scene” or “there are 14 tumor cells on this slide”. A new representation might mean turning a color image into a grayscale image or removing camera motion from an image sequence. Because we are such visual creatures, it is easy to be fooled into thinking that computer vision tasks are easy. How hard can it be to find, say, a car when you are staring at it in an image? Your initial intuitions can be quite misleading. The human brain divides the vision signal into many channels that stream different pieces of information into your brain. Your brain has an attention system that identifies, in a task-dependent way, important parts of an image to examine while suppressing examination of other areas. There is massive feedback in the visual stream that is, as yet, little understood. There are widespread associative inputs from muscle control sensors and all of the other senses that allow the brain to draw on cross-associations made from years of living in the world. The feedback loops in the brain go back to all stages of processing including the hardware sensors themselves (the eyes), which mechanically control lighting via the iris and tune the reception on the surface of the retina. In a machine vision system, however, a computer receives a grid of numbers from the camera or from disk, and, in most cases, that’s it. For the most part, there’s no built-in pattern recognition, no automatic control of focus and aperture, no cross-associations with years of experience. For the most part, vision systems are still fairly naïve. Figure 1- 1 shows a picture of an automobile. In that picture we see a side mirror on the driver’s side of the car. What the computer “sees” is just a grid of numbers. Any given number within that grid has a rather large noise component and so by itself gives us little information, but this grid of numbers is all the computer “sees”. Our task then becomes to turn this noisy grid of numbers into the perception: “side mirror”. Figure 1-2 gives some more insight into why computer vision is so hard. 2 Computer vision is a vast field. This book will give you a basic grounding in the field, but we also recommend texts by Szeliski [Szeliski2011] for a good overview of practical computer vision algorithms, and Hartley [Hartley06] for how 3D vision really works. Figure 1-1. To a computer, the car’s side mirror is just a grid of numbers In fact, the problem, as we have posed it thus far, is worse than hard; it is formally impossible to solve. Given a two-dimensional (2D) view of a 3D world, there is no unique way to reconstruct the 3D signal. Formally, such an ill-posed problem has no unique or definitive solution. The same 2D image could represent any of an infinite combination of 3D scenes, even if the data were perfect. However, as already mentioned, the data is corrupted by noise and distortions. Such corruption stems from variations in the world (weather, lighting, reflections, movements), imperfections in the lens and mechanical setup, finite integration time on the sensor (motion blur), electrical noise and compression artifacts after image capture. Given these daunting challenges, how can we make any progress? Figure 1-2: The ill-posed nature of vision: the 2D appearance of objects can change radically with viewpoints In the design of a practical system, additional contextual knowledge can often be used to work around the limitations imposed on us by visual sensors. Consider the example of a mobile robot that must find and pick up staplers in a building. The robot might use the facts that a desk is an object found inside offices and that staplers are mostly found on desks. This gives an implicit size reference; staplers must be able to fit on desks. It also helps to eliminate falsely “recognizing” staplers in impossible places (e.g., on the ceiling or a window). The robot can safely ignore a 200-foot advertising blimp shaped like a stapler because the blimp lacks the prerequisite wood-grained background of a desk. In contrast, with tasks such as image retrieval, all stapler images in a database may be of real staplers and so large sizes and other unusual configurations may have been implicitly precluded by the assumptions of those who took the photographs. That is, the photographer perhaps took pictures only of real, normal-sized staplers. Also, when taking pictures, people tend to center objects and put them in characteristic orientations. Thus, there is often quite a bit of unintentional implicit information within photos taken by people. Contextual information can also be modeled explicitly with machine learning techniques. Hidden variables such as size, orientation to gravity, and so on can then be correlated with their values in a labeled training set. Alternatively, one may attempt to measure hidden bias variables by using additional sensors. The use of a laser range finder to measure depth allows us to accurately infer the size of an object. The next problem facing computer vision is noise. We typically deal with noise by using statistical methods. For example, it may be impossible to detect an edge in an image merely by comparing a point to its immediate neighbors. But if we look at the statistics over a local region, edge detection becomes much easier. A real edge should appear as a string of such immediate neighbor responses over a local region, each of whose orientation is consistent with its neighbors. It is also possible to compensate for noise by taking statistics over time. Still, other techniques account for noise or distortions by building explicit models learned directly from the available data. For example, because lens distortions are well understood, one need only learn the parameters for a simple polynomial model in order to describe—and thus correct almost completely—such distortions. The actions or decisions that computer vision attempts to make based on camera data are performed in the context of a specific purpose or task. We may want to remove noise or damage from an image so that our security system will issue an alert if someone tries to climb a fence or because we need a monitoring system that counts how many people cross through an area in an amusement park. Vision software for robots that wander through office buildings will employ different strategies than vision software for stationary security cameras because the two systems have significantly different contexts and objectives. As a general rule: the more constrained a computer vision context is, the more we can rely on those constraints to simplify the problem and the more reliable our final solution will be. OpenCV is aimed at providing the basic tools needed to solve computer vision problems. In some cases, high-level functionalities in the library will be sufficient to solve the more complex problems in computer vision. Even when this is not the case, the basic components in the library are complete enough to enable creation of a complete solution of your own to almost any computer vision problem. In the latter case, there are some tried-and-true methods of using the library; all of them start with solving the problem using as many available library components as possible. Typically, after you’ve developed this first-draft solution, you can see where the solution has weaknesses and then fix those weaknesses using your own code and cleverness (better known as “solve the problem you actually have, not the one you imagine”). You can then use your draft solution as a benchmark to assess the improvements you have made. From that point, whatever weaknesses remain can be tackled by exploiting the context of the larger system in which your problem solution is embedded, or by setting out to improve some component of the system with your own novel contributions. The Origin of OpenCV OpenCV grew out of an Intel Research initiative to advance CPU-intensive applications. Toward this end, Intel launched many projects including real-time ray tracing and 3D display walls. One of the authors (Gary) working for Intel at that time was visiting universities and noticed that some top university groups, such as the MIT Media Lab, had well-developed and internally open computer vision infrastructures—code that was passed from student to student and that gave each new student a valuable head start in developing his or her own vision application. Instead of reinventing the basic functions from scratch, a new student could begin by building on top of what came before. Thus, OpenCV was conceived as a way to make computer vision infrastructure universally available. With the aid of Intel’s Performance Library Team,3 OpenCV started with a core of implemented code and algorithmic specifications being sent to members of Intel’s Russian library team. This is the “where” of OpenCV: it started in Intel’s research lab with collaboration from the Software Performance Libraries group together with implementation and optimization expertise in Russia. Chief among the Russian team members was Vadim Pisarevsky, who managed, coded, and optimized much of OpenCV and who is still at the center of much of the OpenCV effort. Along with him, Victor Eruhimov helped develop the early infrastructure, and Valery Kuriakin managed the Russian lab and greatly supported the effort. There were several goals for OpenCV at the outset: • Advance vision research by providing not only open but also optimized code for basic vision infrastructure. No more reinventing the wheel. • Disseminate vision knowledge by providing a common infrastructure that developers could build on, so that code would be more readily readable and transferable. • Advance vision-based commercial applications by making portable, performance-optimized code available for free—with a license that did not require commercial applications to be open or free themselves. Those goals constitute the “why” of OpenCV. Enabling computer vision applications would increase the need for fast processors. Driving upgrades to faster processors would generate more income for Intel than selling some extra software. Perhaps that is why this open and free code arose from a hardware vendor rather than a software company. Sometimes, there is more room to be innovative at software within a hardware company. In any open source effort, it is important to reach a critical mass at which the project becomes self-sustaining. There have now been around seven million downloads of 3 Shinn Lee was of key help as was Stewart Taylor. OpenCV, and this number is growing by hundreds of thousands every month4. The user group now approaches 50,000 members. OpenCV receives many user contributions, and central development has long since moved outside of Intel.5 OpenCV’s past timeline is shown in Figure 1-3. Along the way, OpenCV was affected by the dot-com boom and bust and also by numerous changes of management and direction. During these fluctuations, there were times when OpenCV had no one at Intel working on it at all. However, with the advent of multicore processors and the many new applications of computer vision, OpenCV’s value began to rise. Similarly, rapid growth in the field of robotics has driven much use and development of the library. After becoming an open source library, OpenCV spent several years under active development at Willow Garage and Itseez, and now is supported by the OpenCV foundation at http//opencv.org. Today, OpenCV is actively being developed by the OpenCV.org foundation, Google supports on order of 15 interns a year in the Google Summer of Code program6, and Intel is back actively supporting development. For more information on the future of OpenCV, see Chapter 14. Figure 1-3: OpenCV timeline 4 It is noteworthy, that at the time of the publication of “Learning OpenCV” in 2006, this rate was 26,000 per month. Seven years later, the download rate has grown to over 160,000 downloads per month. 5 As of this writing, Itseez (http://itseez.com/) is the primary maintainer of OpenCV 6 Google Summer of Code https://developers.google.com/open-source/soc/ Who Owns OpenCV? Although Intel started OpenCV, the library is and always was intended to promote commercial and research use. It is therefore open and free, and the code itself may be used or embedded (in whole or in part) in other applications, whether commercial or research. It does not force your application code to be open or free. It does not require that you return improvements back to the library—but we hope that you will. Downloading and Installing OpenCV The main OpenCV site is at http://opencv.org, from which you can download the complete source code for the latest release, as well as many recent releases. The downloads themselves are found at the downloads page: http://opencv.org/downloads.html. However, if you want the very most up-to-date version it is always found on GitHub at https://github.com/Itseez/opencv, where the active development branch is stored. The computer vision developer’s site (with links to the above) is at http://code.opencv.org/. Installation In modern times, OpenCV uses Git as its development version control system, and CMake to build7. In many cases, you will not need to worry about building, as compiled libraries exist for supported environments. However, as you become a more advanced user, you will inevitably want to be able to recompile the libraries with specific options tailored to your application and environment. On the tutorial pages at http://docs.opencv.org/doc/tutorials/tutorials.html under “introduction to OpenCV”, there are descriptions of how to set up OpenCV to work with a number of combinations of operating systems and development tools. Windows At the page: http://opencv.org/downloads.html, you will see a link to download the latest version of OpenCV for Windows. This link will download an executable file which you can run, and which will install OpenCV, register DirectShow filters, and perform various post-installation procedures. You are now almost ready to start using OpenCV.8 The one additional detail is that you will want to add is an OPENCV_DIR environment variable to make it easier to tell your compiler where to find the OpenCV binaries. You can set this by going to a command prompt and typing9: setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10 If you built the library to link statically, this is all you will need. If you built the library to link dynamically, then you will also need to tell your system where to find the library 7 In olden times, OpenCV developers used Subversion for version control and automake to build. Those days, however, are long gone. 8 It is important to know that, although the Windows distribution contains binary libraries for release builds, it does not contain the debug builds of these libraries. It is therefore likely that, before developing with OpenCV, you will want to open the solution file and build these libraries for yourself. 9 Of course, the exact path will vary depending on your installation, for example if you are installing on an ia64 machine, then the path will not include “x86”, but rather “ia64”. binary. To do this, simply add %OPENCV_DIR%\bin to your library path. (For example, in Windows 7, right-click on your Computer icon, select Properties, and then click on Advanced System Settings. Finally select Environment Variables and add the OpenCV binary path to the Path variable.) To add the commercial IPP performance optimizations to Windows, obtain and install IPP from the Intel site (http://www.intel.com/software/products/ipp/index.htm); use version 5.1 or later. Make sure the appropriate binary folder (e.g., c:/program files/intel/ipp/5.1/ia64/bin) is in the system path. IPP should now be automatically detected by OpenCV and loaded at runtime (more on this in Chapter 3). Linux Prebuilt binaries for Linux are not included with the Linux version of OpenCV owing to the large variety of versions of GCC and GLIBC in different distributions (SuSE, Debian, Ubuntu, etc.). In many cases however, your distribution will include OpenCV. If your distribution doesn’t offer OpenCV, you will have to build it from sources. As with the Windows installation, you can start at the http://opencv.org/downloads.html page, but in this case the link will send you to Sourceforge10, where you can select the tarball for the current OpenCV source code bundle. To build the libraries and demos, you’ll need GTK+ 2.x or higher, including headers. You’ll also need pkgconfig, libpng, libjpeg, libtiff, and libjasper with development files (i.e., the versions with -dev at the end of their package names). You’ll need Python 2.6 or later with headers installed (developer package). You will also need libavcodec and the other libav* libraries (including headers) from ffmpeg 1.0 or later . Download ffmpeg from http://ffmpeg.mplayerhq.hu/download.html.11 The ffmpeg program has a lesser general public license (LGPL). To use it with non-GPL software (such as OpenCV), build and use a shared ffmpg library:

2016-04-21

车牌号分割新方法【A Novel Approach for License Plate Character Segmentation】

Character segmentation is an important step in license plate recognition (LPR) system. In this paper, a novel character segmentation method of license plate is presented combining Laplacian Transformation, region growing and prior knowledge of license plate. In the proposed methodology, image preprocessing is performed to the license plate at first, and the character region in license plate is enhanced in the following. Then the edges of the characters are detected by using Laplacian Transformation and the candidate regions of characters are located by using region growing algorithm. And the character segmentation regions are determined by using prior knowledge of license plate. Finally the characters are segmented from original license plate and binarization is performed to the characters, which can make it more efficient for character recognition in OCR system. The proposed method in character segmentation is fast and accurate, and is tolerant to license plate with deformations, rotations, plate frame, rivet, the space mark, and so on. And promising results have been obtained in experiments on Chinese license plates.

2016-04-21

The OpenGL Extension Wrangler (glew-1.13.0) oepngl开发必备

The OpenGL Extension Wrangler (GLEW)是用来访问OpenGL 3.2 API函数的。不幸的是你不能简单的使用#include <GL/gl.h>来访问OpenGL接口,除非你想用旧版本的OpenGL。在现代OpenGL中,API函数是在运行时(run time)确定的,而非编译期(compile time)。GLEW可以在运行时加载OpenGL API。 GLFW允许我们跨平台创建窗口,接受鼠标键盘消息。OpenGL不处理这些窗口创建和输入,所以就需要我们自己动手。我选择GLFW是因为它很小,并且容易理解。

2016-03-22

soil图像读取库 opengl开发必备

SOIL库是一个小型的C语言库,用来加载纹理到OpenGL 简单的图片读取库,读取图片作为OpenGL的纹理,大部分图片格式都可以读。

2016-03-22

OpenGL Mathematics (GLM) opengl开发必备

OpenGL Mathematics (GLM)是一个数学库,用来处理矢量和矩阵等几乎其它所有东西。旧版本OpenGL提供了类似glRotate, glTranslate和glScale等函数,在现代OpenGL中,这些函数已经不存在了,我们需要自己处理所有的数学运算。GLM能在后续教程里提供很多矢量和矩阵运算上帮助。

2016-03-22

MSP430常用模块应用原理.pdf

MSP430常用模块应用原理.pdf

2016-03-22

MSP430用户手册(高清中文版)

MSP430用户手册

2016-03-22

下载程序烧录软件(STC_ISP_V483)

单片机程序烧录软件

2016-03-22

HTML语言教程 超级实用

HTML 语言教程:目录 -------------------------------------------------------------------------------- HTML标记(Tag)索引(Index) 第一章 页面标记 第一节 HTML文件结构 第二节 语言字符集信息 第三节 背景色彩和文字色彩 第四节 页面空白 第五节 链接 第六节 开一个新(浏览器)窗口 第七节 标尺线 第二章 字体标记 第一节 标题字体 第二节 字体大小 第三节 物理字体 第四节 逻辑字体 第五节 字体颜色 第六节 客户端字体 第七节 字符实体 1. HTML2.0 字符实体名称列表 2. HTML3.2 字符实体名称列表 3. ISO 字符实体名称列表 第三章 文字布局标记 第一节 行的控制 第二节 文字的对齐 第三节 文字的分区显示 第四节 列表 第五节 定制列表元素 第六节 预格式化文本 第七节 空白 第八节 多列文本 第九节 其它 第四章 图象标记 第一节 链接图象的基本语法 第二节 图象和文字的对齐 第三节 图象在页面中的对齐/布局 第四节 边框 第五节 客户端图象映射图 第五章 表单标记 第一节 基本语法 第二节 文字和密码输入 第三节 复选框和单选框 第四节 图象坐标 第五节 隐藏表单的元素 第六节 列表框 第七节 文本区域 第六章 表格标记 第一节 表格的基本语法 第二节 跨多行、多列的表元 第三节 表格尺寸设置 第四节 表格内文字的对齐/布局 第五节 表格在页面中的对齐/布局 第六节 表格的标题 第七章 表格进阶 第一节 表格的色彩 第二节 表格的分组显示 第三节 表格中边框的显示 第四节 表格中分隔线的显示 第八章 多窗口页面 第一节 基本语法 第二节 各窗口的尺寸设置 第三节 各窗口间相互操作 第四节 Frame 的外观 第五节 浮动窗口 第九章 会移动的文字 第一节 基本语法 第二节 文字移动属性的设置 第三节 外观设置 第十章 多媒体页面 第一节 嵌入多媒体文本 第二节 背景音乐 第三节 插入视频剪辑

2016-03-22

【W3School全套教程】HTML/XML/SQL等

领先的 Web 技术教程 - 全部免费 在w3school,你可以找到你所需要的所有的网站建设教程。 从基础的HTML到XHTML,乃至进阶的XML、SQL、数据库、多媒体和WAP。 从左侧的菜单选择你需要的教程!(本站状态:内部测试) 完整的网站技术参考手册 我们的参考手册涵盖了网站技术的方方面面。 其中包括W3C的标准技术:HTML、XHTML、CSS、XML 。以及其他的技术,诸如JavaScript、PHP、ASP、SQL等等。 在线实例测试工具 在w3school,我们提供上千个实例。 通过使用我们的在线编辑器,你可以编辑这些例子,并对代码进行实验。 快捷易懂的学习方式 一寸光阴一寸金,因此,我们为您提供快捷易懂的学习内容。 在这里,您可以通过一种易懂的便利的模式获得您需要的任何知识。

2016-03-22

【C语言深度解剖】 --解开程序员面试笔试的秘密

目 录 第一章 关键字...................................................................................................................................9 1.1,最宽恒大量的关键字----auto..........................................................................................11 1.2,最快的关键字---- register............................................................................................... 11 1.2.1,皇帝身边的小太监----寄存器............................................................................. 11 1.2.2,使用 register 修饰符的注意点.............................................................................11 1.3,最名不符实的关键字----static........................................................................................12 1.3.1,修饰变量...............................................................................................................12 1.3.2,修饰函数...............................................................................................................13 1.4,基本数据类型----short、 int、 long、 char、 float、 double........................................... 13 1.4.1,数据类型与“模子”............................................................................................... 14 1.4.2,变量的命名规则...................................................................................................14 1.5,最冤枉的关键字----sizeof...............................................................................................18 1.5.1,常年被人误认为函数...........................................................................................18 1.5.2, sizeof( int) *p 表示什么意思? ........................................................................18 1.4, signed、 unsigned 关键字................................................................................................19 1.6, if、 else 组合.................................................................................................................... 20 1.6.1, bool 变量与“零值”进行比较...............................................................................20 1.6.2, float 变量与“零值”进行比较.................................................................................21 1.6.3,指针变量与“零值”进行比较...............................................................................21 1.6.4, else 到底与哪个 if 配对呢? ...............................................................................22 1.6.5, if 语句后面的分号............................................................................................... 23 1.6.6,使用 if 语句的其他注意事项.............................................................................. 24 1.7, switch、 case 组合........................................................................................................... 24 1.7.1,不要拿青龙偃月刀去削苹果.............................................................................. 24 1.7.2, case 关键字后面的值有什么要求吗? .............................................................. 25 1.7.3, case 语句的排列顺序...........................................................................................25 1.7.4,使用 case 语句的其他注意事项..........................................................................27 1.8, do、 while、 for 关键字................................................................................................... 28 1.8.1, break 与 continue 的区别.....................................................................................28 1.8.2,循环语句的注意点...............................................................................................29 1.9, goto 关键字......................................................................................................................30 1.10, void 关键字....................................................................................................................31 1.10.1, void a? ............................................................................................................31 1.10, return 关键字................................................................................................................. 34 1.11, const 关键字也许该被替换为 readolny....................................................................... 34 1.11.2,节省空间,避免不必要的内存分配,同时提高效率.................................... 35 1.12,最易变的关键字----volatile.......................................................................................... 36 1.13,最会带帽子的关键字----extern.................................................................................... 37 1.14, struct 关键字..................................................................................................................38 1.14.1,空结构体多大? .................................................................................................38 1.14.2,柔性数组.............................................................................................................39 1.14.3, struct 与 class 的区别.........................................................................................40 1.15, union 关键字..................................................................................................................40 1.15.1,大小端模式对 union 类型数据的影响............................................................. 40 1.15.2,如何用程序确认当前系统的存储模式? ........................................................ 41 1.16, enum 关键字..................................................................................................................42 1.16.1, 枚举类型的使用方法..........................................................................................43 1.16.2,枚举与#define 宏的区别....................................................................................43 1.17,伟大的缝纫师----typedef 关键字................................................................................. 44 1.17.1,关于马甲的笑话.................................................................................................44 1.17.2,历史的误会----也许应该是 typerename........................................................... 44 1.17.3, typedef 与#define 的区别...................................................................................45 1.17.4, #define a int[10]与 typedef int a[10]; .............................................................. 46 第二章 符号.....................................................................................................................................49 2.1,注释符号..........................................................................................................................50 2.1.1,几个似非而是的注释问题...................................................................................50 2.1.2, y = x/*p................................................................................................................. 51 2.1.3,怎样才能写出出色的注释...................................................................................51 2.1.3.1,安息吧,路德维希.凡.贝多芬................................................................. 51 2.1.3.2, windows 大师们用注释讨论天气问题....................................................51 2.1.3.3,出色注释的基本要求............................................................................... 52 2.2,接续符和转义符..............................................................................................................53 2.3,单引号、双引号..............................................................................................................54 2.4,逻辑运算符......................................................................................................................54 2.5,位运算符..........................................................................................................................55 2.5.1,左移和右移...........................................................................................................55 2.5.2, 0x01<<2+3 的值为多少? ...................................................................................55 2.6,花括号..............................................................................................................................56 2.7, ++、 --操作符...................................................................................................................56 2.7.1, ++i+++i+++i......................................................................................................... 57 2.7.2,贪心法...................................................................................................................57 2.8, 2/(-2)的值是多少? .........................................................................................................58 2.9,运算符的优先级..............................................................................................................58 2.9.1, 运算符的优先级表................................................................................................58 2.9.2,一些容易出错的优先级问题.............................................................................. 60 第三章 预处理.................................................................................................................................61 3.1,宏定义..............................................................................................................................62 3.1.1,数值宏常量...........................................................................................................62 3.1.2,字符串宏常量.......................................................................................................62 3.1.3,用 define 宏定义注释符号? .............................................................................. 63 3.1.4,用 define 宏定义表达式.......................................................................................63 3.1.5,宏定义中的空格...................................................................................................64 3.1.6, #undef....................................................................................................................64 3.2,条件编译..........................................................................................................................65 3.3,文件包含..........................................................................................................................66 3.4, #error 预处理................................................................................................................... 66 3.5, #line 预处理.....................................................................................................................67 3.6, #pragma 预处理...............................................................................................................67 3.6.8, #pragma pack........................................................................................................ 69 3.6.8.1,为什么会有内存对齐? ........................................................................... 70 3.6.8.2,如何避免内存对齐的影响....................................................................... 70 3.7, #运算符..............................................................................................................................72 3.8, ##预算符..........................................................................................................................72 第四章 指针和数组.........................................................................................................................74 4.1,指针..................................................................................................................................74 4.1.1,指针的内存布局...................................................................................................74 4.1.2, “*”与防盗门的钥匙............................................................................................. 75 4.1.3, int *p = NULL 和*p = NULL 有什么区别? .................................................... 75 4.1.4,如何将数值存储到指定的内存地址.................................................................. 76 4.1.5,编译器的 bug? ....................................................................................................77 4.1.6,如何达到手中无剑、胸中也无剑的地步.......................................................... 78 4.2,数组..................................................................................................................................78 4.2.1,数组的内存布局...................................................................................................78 4.2.3,数组名 a 作为左值和右值的区别.......................................................................79 4.3,指针与数组之间的恩恩怨怨..........................................................................................80 4.3.1,以指针的形式访问和以下标的形式访问.......................................................... 80 4.3.1.1,以指针的形式访问和以下标的形式访问指针....................................... 81 4.3.1.2,以指针的形式访问和以下标的形式访问数组....................................... 81 4.3.2, a 和&a 的区别...................................................................................................... 81 4.3.3,指针和数组的定义与声明...................................................................................83 4.3.3.1,定义为数组,声明为指针....................................................................... 83 4.3.3.2,定义为指针,声明为数组....................................................................... 85 4.3.4,指针和数组的对比...............................................................................................85 4.4,指针数组和数组指针......................................................................................................86 4.4.1,指针数组和数组指针的内存布局...................................................................... 86 4.4.3,再论 a 和&a 之间的区别.....................................................................................87 4.4.4,地址的强制转换...................................................................................................88 4.5,多维数组与多级指针......................................................................................................90 4.5.1,二维数组...............................................................................................................91 4.5.1.1,假想中的二维数组布局........................................................................... 91 4.5.1.2,内存与尺子的对比....................................................................................91 4.5.1.3, &p[4][2] - &a[4][2]的值为多少? ........................................................... 92 4.5.2,二级指针...............................................................................................................93 4.5.2.1,二级指针的内存布局............................................................................... 93 4.6,数组参数与指针参数......................................................................................................94 4.6.1,一维数组参数.......................................................................................................94 4.6.1.1,能否向函数传递一个数组? ................................................................... 94 4.6.1.2,无法向函数传递一个数组....................................................................... 96 4.6.2,一级指针参数.......................................................................................................97 4.6.2.1,能否把指针变量本身传递给一个函数................................................... 97 4.6.2.2,无法把指针变量本身传递给一个函数................................................... 98 4.6.3,二维数组参数与二维指针参数.......................................................................... 99 4.7,函数指针........................................................................................................................100 4.7.1,函数指针的定义.................................................................................................100 4.7.2,函数指针的使用.................................................................................................101 4.7.2.1,函数指针使用的例子............................................................................. 101 4.2.7.2, *(int*)&p ----这是什么? ....................................................................... 102 4.7.3, (*(void(*) ())0)()------这是什么? .....................................................................102 4.7.4,函数指针数组.....................................................................................................103 4.7.5,函数指针数组的指针.........................................................................................104 第五章 内存管理...........................................................................................................................107 5.1,什么是野指针................................................................................................................107 5.2,栈、堆和静态区............................................................................................................107 5.3,常见的内存错误及对策................................................................................................108 5.3.1,指针没有指向一块合法的内存........................................................................ 108 5.3.1.1,结构体成员指针未初始化..................................................................... 108 5.3.1.2,没有为结构体指针分配足够的内存..................................................... 109 5.3.1.3,函数的入口校验......................................................................................109 5.3.2,为指针分配的内存太小.....................................................................................110 5.3.3,内存分配成功,但并未初始化.........................................................................110 5.3.4,内存越界............................................................................................................. 111 5.3.5,内存泄漏............................................................................................................. 111 5.3.5.1,告老还乡求良田......................................................................................112 5.3.5.2,如何使用 malloc 函数.............................................................................112 5.3.5.3,用 malloc 函数申请 0 字节内存.............................................................113 5.3.5.4,内存释放..................................................................................................113 5.3.5.5,内存释放之后..........................................................................................114 5.3.6,内存已经被释放了,但是继续通过指针来使用............................................ 114 第六章 函数................................................................................................................................... 115 6.1,函数的由来与好处........................................................................................................116 6.2,编码风格........................................................................................................................ 116 6.2,函数设计的一般原则和技巧...........................................................................................121 6.4,函数递归........................................................................................................................123 6.4.1,一个简单但易出错的递归例子........................................................................ 123 6.4.2,不使用任何变量编写 strlen 函数......................................................................124 第七章 文件结构.........................................................................................................................127 7.1,文件内容的一般规则....................................................................................................127 7.2,文件名命名的规则........................................................................................................130

2016-03-22

《高质量 C++/C 编程指南》.林锐著 PDF

目 录 前 言 .................................................................................................................................... 6 第 1 章 文件结构 ............................................................................................................... 11 1.1 版权和版本的声明 ................................................................................................... 11 1.2 头文件的结构 .......................................................................................................... 12 1.3 定义文件的结构....................................................................................................... 13 1.4 头文件的作用 .......................................................................................................... 13 1.5 目录结构 .................................................................................................................. 14 第 2 章 程序的版式 ........................................................................................................... 15 2.1 空行.......................................................................................................................... 15 2.2 代码行 ...................................................................................................................... 16 2.3 代码行内的空格....................................................................................................... 17 2.4 对齐.......................................................................................................................... 18 2.5 长行拆分 .................................................................................................................. 19 2.6 修饰符的位置 .......................................................................................................... 19 2.7 注释.......................................................................................................................... 20 2.8 类的版式 .................................................................................................................. 21 第 3 章 命名规则 ............................................................................................................... 22 3.1 共性规则 .................................................................................................................. 22 3.2 简单的 WINDOWS 应用程序命名规则 ...................................................................... 23 3.3 简单的 UNIX 应用程序命名规则.............................................................................. 25 第 4 章 表达式和基本语句................................................................................................ 26 4.1 运算符的优先级....................................................................................................... 26 4.2 复合表达式 .............................................................................................................. 27 4.3 IF 语句 ...................................................................................................................... 27 4.4 循环语句的效率....................................................................................................... 29 4.5 FOR 语句的循环控制变量 ........................................................................................ 30 4.6 SWITCH 语句 .............................................................................................................. 30 4.7 GOTO 语句 ................................................................................................................. 31 第 5 章 常量....................................................................................................................... 33 5.1 为什么需要常量....................................................................................................... 33 5.2 CONST 与 #DEFINE 的比较 ........................................................................................ 33 5.3 常量定义规则 .......................................................................................................... 33 5.4 类中的常量 .............................................................................................................. 34 第 6 章 函数设计 ............................................................................................................... 36 高质量 C++/C 编程指南, v 1.0 2001 Page 4 of 4 6.1 参数的规则 .............................................................................................................. 36 6.2 返回值的规则 .......................................................................................................... 37 6.3 函数内部实现的规则 ............................................................................................... 39 6.4 其它建议 .................................................................................................................. 40 6.5 使用断言 .................................................................................................................. 41 6.6 引用与指针的比较 ................................................................................................... 42 第 7 章 内存管理 ............................................................................................................... 44 7.1 内存分配方式 ........................................................................................................... 44 7.2 常见的内存错误及其对策 ........................................................................................ 44 7.3 指针与数组的对比 .................................................................................................... 45 7.4 指针参数是如何传递内存的? ................................................................................. 47 7.5 FREE 和 DELETE 把指针怎么啦? .............................................................................. 50 7.6 动态内存会被自动释放吗? .................................................................................... 50 7.7 杜绝“野指针” ....................................................................................................... 51 7.8 有了 MALLOC/FREE 为什么还要 NEW/DELETE ? ..................................................... 52 7.9 内存耗尽怎么办? ................................................................................................... 53 7.10 MALLOC/FREE 的使用要点 ...................................................................................... 54 7.11 NEW/DELETE 的使用要点 ........................................................................................ 55 7.12 一些心得体会......................................................................................................... 56 第 8 章 C++函数的高级特性 ............................................................................................ 57 8.1 函数重载的概念....................................................................................................... 57 8.2 成员函数的重载、覆盖与隐藏 ................................................................................ 60 8.3 参数的缺省值 .......................................................................................................... 63 8.4 运算符重载 .............................................................................................................. 64 8.5 函数内联 .................................................................................................................. 65 8.6 一些心得体会 .......................................................................................................... 68 第 9 章 类的构造函数、析构函数与赋值函数 ................................................................. 69 9.1 构造函数与析构函数的起源.................................................................................... 69 9.2 构造函数的初始化表 ............................................................................................... 70 9.3 构造和析构的次序 ................................................................................................... 72 9.4 示例:类 STRING 的构造函数与析构函数 ............................................................... 72 9.5 不要轻视拷贝构造函数与赋值函数 ........................................................................ 73 9.6 示例:类 STRING 的拷贝构造函数与赋值函数 ....................................................... 74 9.7 偷懒的办法处理拷贝构造函数与赋值函数 ............................................................. 75 9.8 如何在派生类中实现类的基本函数 ........................................................................ 76 9.9 一些心得体会 ........................................................................................................... 77 第 10 章 类的继承与组合.................................................................................................. 78 高质量 C++/C 编程指南, v 1.0 2001 Page 5 of 5 10.1 继承 ........................................................................................................................ 78 10.2 组合 ........................................................................................................................ 80 第 11 章 其它编程经验...................................................................................................... 82 11.1 使用 CONST 提高函数的健壮性.............................................................................. 82 11.2 提高程序的效率 ..................................................................................................... 84 11.3 一些有益的建议 ..................................................................................................... 85 参考文献 ............................................................................................................................ 87 附录 A : C++/C 代码审查表 ............................................................................................ 88 附录 B : C++/C 试题 ....................................................................................................... 93 附录 C : C++/C 试题的答案与评分标准......................................................................... 97

2016-03-22

【单幅圆形鱼眼图像的校正.pdf】论文

摘 要: 针对有效圆域提取不准确以及传统柱面投影校正法在垂直方向上校正视场角不能达到 180°的问题, 分 别提出了变角度线扫描法和纵向压缩柱面投影校正法。前者通过不断改变扫描线的倾斜角来寻找切点坐标, 并对无 效切点进行滤除,然后使用 Kasa 圆拟合法求取有效圆域的参数。后者则对传统柱面投影的光路进行了人为的弯折, 从而把投影到无穷远点的光线压缩回柱面上,保留了图像有效信息。通过与经纬映射校正法以及墨卡托投影法的实 验处理结果对比,纵向压缩柱面投影法能弱化校正图像边缘的拉伸模糊效应,使处理结果更加自然。 关键词: 鱼眼图像; 校正; 变角度线扫描; 纵向压缩; 柱面投影

2016-03-16

基于鱼眼镜头的全方位视觉及全景立体球视觉研究

全方位视觉系统可一次拍摄获取水平方向 360⁰场景的全部图像信息,然而基于光的反射原理,它在垂直方向视场有限;全景视觉系统无须视觉机械回转或扫描即可将全部视场内的景物一眼看遍,但将三维信息投影至二维图像,损失一维景深信息;立体视觉系统根据视差原理来计算景物的深度,由于大多采用常规镜头构建,其立体信息重叠范围极其有限。论文通过对基于鱼眼镜头的全方位视觉及全景立体球视觉研究,探索全方位视觉测量新方法以及新型的机器视觉方案。研究内容主要包括: 1. 鱼眼镜头视觉系统基础理论研究。采用鱼眼镜头建立全方位视觉系统,获得 360⁰×180⁰的视场范围。建立鱼眼镜头全方位视觉系统几何模型,开展系统参数标定方法、鱼眼图像畸变矫正算法等基础理论研究; 2. 鱼眼镜头视觉系统应用的关键技术研究。开展基于鱼眼图像的多机动目标识别、跟踪、定位等鱼眼镜头视觉系统应用的关键技术研究。将理论研究成果应用至移动机器人视觉自主导航和视频监控领域,实现了不同机器人平台的室内、室外自主导航和监控空间内的全局目标监测; 3. 全景立体球视觉在全方位视觉研究取得成果的基础上,进一步发展全景视觉与立体视觉理论,揭示全景视觉与立体视觉是可以有机结合、优势互补的客观规律,最终提出一项新的机器视觉方案-“全景立体球视觉”。构建全景立体球视觉理论体系将其抽象为“球视觉”模型,建立几何及数学模型;搭建全景立体球视觉仿真系统,在立体标定空间内实现对“球视觉”内、外部参数的标定; 4. 嵌入式全方位视觉系统平台及全景立体球视觉图像处理器硬件设计。依托嵌入式技术研发嵌入式全方位视觉系统平台,开展理论研究成果的嵌入式系统程序移植工作,实现了小型化、模块化、集成化的设计理念。在此基础上提出全景立体球视觉系统的基于四组成像芯片+FPGA+DSP 硬件架构的集图像采集、处理、分析于一体的嵌入式图像处理器设计及功能模块分工方案。

2016-03-16

【opengl41-quick-reference-card.pdf】

opengl41-quick-reference-card.pdf

2016-03-16

CC++ Library Reference

C++ Library Reference The standard C++ library is a collection of functions, constants, classes, objects and templates that extends the C++ language providing basic functionality to perform several tasks, like classes to interact with the operating system, data containers, manipulators to operate with them and algorithms commonly needed. The declarations of the different elements provided by the library are split in several files that shall be included in the code in order to have access to its components:

2016-03-16

【OpenGL Development Cookbook】 PDF

OpenGL is the leading cross-language, multi-platform API used by masses of modern games and applications in a vast array of different sectors. Developing graphics with OpenGL lets you harness the increasing power of GPUs and really take your visuals to the next level. OpenGL Development Cookbook is your guide to graphical programming techniques to implement 3D mesh formats and skeletal animation to learn and understand OpenGL. OpenGL Development Cookbook introduces you to the modern OpenGL. Beginning with vertex-based deformations, common mesh formats, and skeletal animation with GPU skinning, and going on to demonstrate different shader stages in the graphics pipeline. OpenGL Development Cookbook focuses on providing you with practical examples on complex topics, such as variance shadow mapping, GPU-based paths, and ray tracing. By the end you will be familiar with the latest advanced GPU-based volume rendering techniques.

2016-03-16

SD卡FAT32文件系统学习手册--PDF

SD卡FAT32文件系统学习手册,通过WinHex软件查看SD卡扇区的数据信息。

2015-10-08

【FatFs文件系统(SD卡)】资料整理

【FatFs文件系统(SD卡)】详细介绍FATFS文件系统构架。 资料整理本资源包含以下内容: 1、FatFs通用FAT文件系统模块中文手册.pdf 2、FatFs文件系统_0.09A中文手册(有目录).pdf 3、FatFs文件系统中文资料.docx

2015-10-08

STC12C5A60S2系列单片机用户手册

芯片手册: STC12C5A60S2系列单片机

2015-10-08

GLUT(OPENGL实用函数工具包)

OpenGL开发环境的资料,OPENGL开发必备。 1. 把解压得到的glut.h放到"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl"(与具体安装位置有关,应该是 安装目录\microsoft sdks\windows\v7.0A\include\gl) 2. 把解压得到的glut.lib和glut32.lib放到"“Programfiles(x86)\Microsoft Visual studio 10.0\VC\lib" 中(与具体安装位置有关,同上) 3. 把解压得到的glut.dll放到"C:\Windows\System32" 4. 把glut32.dll放到“Programfiles(x86)\Microsoft Visual studio 10.0\VC\bin”下(注意这个,网上有人说放到system32里,但是我试过,会报错)(与具体安装位置有关,同上) 5. 打开vs2010,随便打开或新建一个项目。 选择 project->project property-> Configuration Properties->Linker->Input->Additional Dependencies 在其中添加opengl32.lib glu32.lib glut32.lib glut.h ---> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl glut.dll, glut32.dll ---> C:\Windows\SysWOW64 (windows7 64位操作系统) ---> C:\Windows\System32 (windows7 32位操作系统) glut.lib, glut32.lib ---> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib

2015-10-08

【TCP/IP网络编程 】尹圣雨 PDF----基于Linux和Windows平台

《TCP/IP网络编程》涵盖操作系统、系统编程、TCP/IP协议等多种内容,结构清晰、讲解细致、通俗易懂。书中收录丰富示例,详细展现了Linux和Windows平台下套接字编程的共性与个性。特别是从代码角度说明了不同模型服务器端的区别,还包括了条件触发与边缘触发等知识,对开发实践也有很大帮助。   《TCP/IP网络编程》针对网络编程初学者,面向具备C语言基础的套接字网络编程学习者,适合所有希望学习Linux和Windows网络编程的人。

2017-10-20

Image Alignment and Stitching: A Tutorial 【 图像配准与拼接 原理详解】 pdf

本教程详细介绍和分析了图像拼接的整个流程、原理:包括特征检测、匹配(配准)、运动模型(相机模型估计、绑定捆绑),投影变换、图像融合。非常丰富!!

2016-12-12

【模式识别】第四版 配套答案 Sergios Theodoridis

本pdf是模式识别第四版(Sergios Theodoridis)的配套答案,包括各章节的习题详细答案以及要点总结,笔记详尽,讲解透彻。 介绍:Notes and Solutions for: Pattern Recognition by Sergios Theodoridis and Konstantinos Koutroumbas

2016-05-04

【模式识别】第四版 Sergios Theodoridis 高清

模式识别的经典图书,非常详细,讲的很深入,值得学习!

2016-05-04

基于多摄像头全景图像拼接的实时视频监控技术研究_邹超洋

在视频监控应用中,如何有效实现宽视场范围视频的完整获取,是视频监控系统的关键功能之一。本文针对多摄像头硬件平台,重点研究 360 度全景视频拼接的实现技术。在保证高质量的拼接图像的前提下,满足实际应用场景的实时性要求是本文算法设计的主要目标。针对全景拼接在视频监控领域这一应用背景,本文对多摄像头系统全景拼接存在的一些优势和约束进行详细分析,并在此基础上,采用多个广角镜头进行视频图像采集,实现摄像头个数和单个镜头视角之间的合理折中。在控制成本的前提下,有效实现水平方向 360 度无盲区监控。 针对全景视频拼接算法的实时性能和拼接效果,本文重点在以下几个方面开展了研究工作: 1、本文采用普通的监控 CCD 单板机和广角镜头组装摄像单元,对多个摄像单元通道采用多线程同步视频采集。针对普通监控镜头采集图像质量不高的问题,提出基于颜色校正板的颜色校正方法,对输入图像进行预处理,有效改善图像质量。并采用基于灰度均值的方法,对相邻图像的重叠区域进行亮度调整。 2、本文基于经典的直线标定法思想,提出两步法镜头矫正方案。通过所提出的直线标定法对镜头进行一次矫正,然后通过手动设置并调节畸变参数,对矫正后的图像进行二次矫正,所提出的算法能保证良好的镜头矫正效果。 3、研究了柱面投影模型的原理,提出将柱面映射的投影中心修正为镜头畸变中心,克服了由于畸变和透视失真等因素造成的重叠区物体成像尺寸不一致的问题。然后,利用所提出的坐标映射表的方式,一次性实现镜头畸变矫正和柱面映射,有效提高了算法执行速度。 4、分析了基于 Harris 特征和 SIFT 特征的配准算法原理。SIFT 特征配准算法鲁棒性高,但难以满足硬件系统的实时性要求;基于 Harris 特征的配准算法复杂度低,但难以应对广角镜头畸变引起的图像质量差的问题,匹配性能较差。最后采用了基于积分图像的快速归一化互相关配准方案,实验验证了算法的可行性和有效性。 5、此外,在图像融合方面,基于经典的多频带融合算法,结合线性融合的思想,优化了一种简单的多分辨率线性融合方法。在保证融合质量的基础上,提升了速度。 关键字:多镜头多传感器;图像配准;全景拼接;实时监控;广角镜头

2016-05-01

模式识别(第三版)中文版 西奥多里蒂斯

【模式识别】(第三版)中文版 西奥多里蒂斯,高清Pdf

2016-05-01

图像分割及其在车牌识别中的应用 【文献】

图像分割作为数字图像处理技术基础而重要的环节,有着广阔的应用和研究前景。从图像技术的角度来看,它处于图像处理和图像分析之间的层次,它不同于一般意义的图像处理过程(比如图像采集、图像变换、图像增强等),又作为图像分析的一个关键的底层环节,具有其显著的重要性,因此成为当前图像技术领域的一个研究热点。本文主要围绕图像分割,回顾和总结了研究生阶段的工作。本论文主要的研究工作包括:1.通过大量的文献阅读,对图像分割算法和图像分割质量的评价有了全面而系统的了解,对经典的图像分割算法—最大类间法和最大嫡一一的基本原理和推广,作了详细的研究和总结。2.提出了基于判决域自动约束(VSAR)的二维Ostu闽值分割算法。该算法,通过一个经验公式,自动确定判决域的大小,从而进一步减少了算法的运算量,并具有较强的实用性。3.提出了基于判决域自动约束(VSAR)的二维最大嫡闭值分割算法。该算法,通过一个经验公式,自动确定判决域的大小,从而进一步减少了算法的运算量,具有较强的实用性。4.在汽车牌照识别研究中,针对车牌的定位,提出了一种简单实用的车牌定位方法—基于边缘跳变统计的车牌定位方法,在应用的仿真中,取得了良好的效果。

2016-04-24

【分水岭算法+腐蚀膨胀】 matlab程序

分水岭算法+腐蚀膨胀

2016-04-24

全景可视化辅助泊车系统研究 论文

本文深入研究了全景可视化辅助泊车系统中的关键技术,在此基础上设计了一种实现此系统的方案:在车身周围安装四个摄像头,将前方和后方带有透视效果的视频图像通过逆投影变换转换为俯视效果;通过图像拼接生成全景鸟瞰图;将低照度环境下的视频图像进行增强处理,提高图像的亮度和对比度。本文设计实现了全景可视化辅助泊车系统的软硬件结构,并取得以下成果: (1)根据图像坐标系和真实世界坐标系之间的关系,采用逆投影转换的方法对图像进行视角转换,结合最近邻域插值方法建立逆投影变换查找表,快速实现透视图到俯视图的转换,具有较高的实时性。 (2)设置车身两侧的广角摄像头垂直拍摄地面,在保证全景鸟瞰图视野范围的前提下节省了一半的图像视角转换时间。 (3)针对图像存在一定失真的情况下完成图像的拼接,并根据全景鸟瞰图中各个方向获取的图像之间的空间关系建立全景图像拼接映射表,系统可以通过查表的方式快速实现全景鸟瞰图的生成。 (4)针对光线较弱的环境对视频图像亮度的影响,在全景可视化辅助泊车系统中引入低照度图像增强处理。分析比较了一般低照度图像增强算法,结合局部对比度增强技术设计了一种改进的图像增强算法。 本文设计实现的全景可视化辅助泊车系统能够适应不同光照环境,通过查表方式快速实现全景鸟瞰图的生成。通过实验验证了本系统的有效性和时间性能,满足辅助泊车的需要。

2016-04-24

一种针对车载全景系统的图像拼接算法的仿真

传统的全景图像拼接算法,多采用 Harris 角点的特征提取或尺度不变特征转换 (SIFT)的特征匹配算子的 方式,对存在重合部分的图像进行图像拼接处理。但对于车载全景图像拼接算法而言,车身四周采集到的 4 幅鱼眼 畸变图像,使用特征提取算子的方法进行的拼接,运算的复杂度高,效率低,不能满足车载设备的实时性要求。针 对这一问题,该文提出一种专门应用在车载系统的车载全景图像拼接算法,并对其进行 Matlab 仿真,最大限度提 高算法的运算效率,以满足车载系统实时性的要求,真实的反应路况信息,辅助驾驶员安全驾驶。 关键词:计算机视觉;图像拼接;车载全景;实时性;鱼眼图像

2016-04-24

OpenCV By Example(PACKT,2016) 详尽的Opencv项目学习

2016-04-21

Robust Real-time Object Detection 实时目标检测

2016-04-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除