Welcome 微信登录

首页 / 软件开发 / C++

局域网聊天软件(winsocket)

局域网聊天软件(winsocket)

局域网聊天软件(winsocket)2015-05-07程序实现功能:局域网聊天软件,启动即可找到在线设备,并能够进行简单的文字聊天。其实下面这个框图已经说明了程序的绝大部分功能原理。核心类的程序框图我觉得,这个程序中使用的最好的技术,应该就是IOCP了。后面我会针对IOCP好好地写一篇博文,这个技术虽然刚学的时候有点乱,但是确实很好用。上面的框图中中间的UDPServer线程等待的事件完成是MainServer线程在Listen函数调用结束后设置的事件。...
GPGPU OpenCL实现精确字符串查找

GPGPU OpenCL实现精确字符串查找

GPGPU OpenCL实现精确字符串查找2015-05-07字符串查找是信息安全、信息过滤领域的重要操作,尤其是对大文本的实时处理。这篇作为实例,使用GPU OpenCL进行精确模式串查找。1.加速方法(1)将少量常量数据,如模式串长度、文本长度等,保存在线程的private memory中。(2)将模式串保存在GPU的local memory中,加速线程对模式串的访问。(3)将待查找的文本保存在global memory中,使用尽可能多线程访问glob...
GPGPU OpenCL Reduction操作如何与group同步

GPGPU OpenCL Reduction操作如何与group同步

GPGPU OpenCL Reduction操作如何与group同步2015-05-11Reduction操作:规约操作就是由多个数生成一个数,如求最大值、最小值、向量点积、求和等操作,都属于这一类操作。有大量数据的情况下,使用GPU进行任务并行与数据并行,可以收到可好的效果。group同步:OpenCL只提供了工作组内的各线程之间的同步机制,并没有提供所有线程的同步。提供组内item-work同步的方法:void barrier (cl_mem_fenc...
GPGPU OpenCL如何获取设备信息

GPGPU OpenCL如何获取设备信息

GPGPU OpenCL如何获取设备信息2015-05-11在使用OpenCL编程中,需要对GPU设备的底层理解,这样才能更好的进行代码优化。比如计算单元CU数量,每个CU的执行单元PE数量,每个CU中的共享内存大小等等。只有了解了这些才能更好的使用共享内存,设计核函数的运行参数等。1.clGetDeviceInfoOpenCL使用clGetDeviceInfo函数获取设备具体,函数原型如下:cl_int clGetDeviceInfo (cl_devic...
如何使用ACE_Task管理线程

如何使用ACE_Task管理线程

如何使用ACE_Task管理线程2015-05-11为什么要使用ACE_Task来管理线程从C#转到C++后,感觉到C++比C#最难的地方,就是在系统编程时,C#中有对应的类库,我接触到一个类后,就可以通过这个类,知道很多相关的功能。而在C++中,必须使用Windows API,但是Windows API的缺点反而是不系统。比如,想要创建一个线程时,C#中可以通过新建一个Thread类,我得到这个类后,就可以通过帮助或者MSDN了解到这个类中有哪些方法,如...
如何使用ACE_Get_Opt解析命令行

如何使用ACE_Get_Opt解析命令行

如何使用ACE_Get_Opt解析命令行2015-05-11当我们用C++开发一些C++控制台小工具时,会需要一些用户输入的参数来决定程序如何工作和执行,而用户输入参数的方式大部分都是采用命令行参数的方式。比如上一篇文章 玩转Windows服务系列——命令行管理Windows服务 中介绍的sc和net工具。既然命令行参数这么普遍也这么有用,那么就有必要学习一下如何解析命令行参数。如何解析命令行参数那么命令行参数要如何解析呢。最最最笨...
使用ACE遇到无法打开包括文件:“inttypes.h”的解决方案

使用ACE遇到无法打开包括文件:“inttypes.h”的解决方案

使用ACE遇到无法打开包括文件:“inttypes.h”的解决方案2015-05-13本来想使用ACE_Get_Opt类来做一个命令行解析的功能,但是当项目中配置好了ACE库的路径后,编译时遇到“无法打开包括文件: inttypes.h : No such file or directory ”的错误。下面是我的目录配置由于是编译错误,所以和库目录的设置没关系。下面是代码Collapse// GetOptTest.cpp : 定义控...
使用XCB编写X Window程序(一) 快速起步

使用XCB编写X Window程序(一) 快速起步

使用XCB编写X Window程序(一) 快速起步2015-05-13估计现在已经没有谁使用XCB这么底层的库写应用程序了,要用也是用经过精心封装的Motif, LessTiff, GTK, Qt, EWL, ETK或者Cairo等高层次的库。我之所以这么费心地去折腾XCB,其实主要也是为了学习。毕竟,使用最接近底层的UI库写代码是学习X协议及GUI编程原理的最好方法。XCB的主要教程可以参考这里:http://xcb.freedesktop.org/tu...
使用XCB编写X Window程序(二) 在窗口中绘图

使用XCB编写X Window程序(二) 在窗口中绘图

使用XCB编写X Window程序(二) 在窗口中绘图2015-05-13在上一篇中,我展示了怎么连接X服务器以及怎么创建一个窗口。创建窗口是编写GUI程序的根本。在GUI编程中还有另外两个重点,其一是事件处理,其二是在窗口中绘图。这一篇中,将展示如何使用XCB在窗口中进行绘图。先看一个示例代码及其运行效果,代码如下:#include <stdlib.h>#include <stdio.h>#include <xcb/xcb....
使用XCB编写X Window程序(三) 捕获并响应事件(Event)

使用XCB编写X Window程序(三) 捕获并响应事件(Event)

使用XCB编写X Window程序(三) 捕获并响应事件(Event)2015-05-13GUI程序都是事件驱动的,目前这已经是大家的共识,X Window也不例外。在这一篇中,将展示X核心协议中有哪些事件,以及怎么使用XCB来捕获并响应事件。首先还是先给出一份完整的代码及其运行效果,然后再做详细的解释。代码如下:1 #include <stdlib.h>2 #include <stdio.h>3 #include <intt...
使用XCB编写X Window程序(四) 在窗口中绘制文字

使用XCB编写X Window程序(四) 在窗口中绘制文字

使用XCB编写X Window程序(四) 在窗口中绘制文字2015-05-13在前面的几节中,我展示了使用XCB创建窗口、在窗口中画图以及捕获并处理事件。在这一篇中,我将展示在窗口中绘制文字。绘制文字当然离不开字体,所以我还会简单地探讨一下X Server的核心字体系统。老规矩,先上代码和运行效果图,代码如下:1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <stri...
光流(optical flow)和openCV中实现

光流(optical flow)和openCV中实现

光流(optical flow)和openCV中实现2015-05-15光流的概念:是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上...
OpenCV实现两张图片的合并

OpenCV实现两张图片的合并

OpenCV实现两张图片的合并2015-05-15原理:两张图片合并,想想图片是用一个个像素点来存储,每个像素点有他的值。那么合并,无非就是像素点值得合并,使用的公式可以就是给两张图片分别一个权值,然后求和。向下面这个公式:的值位于0至1之间OpenCV实现:那么我们在openCV内怎么实现呢?在openCV中,有一个addWeighted函数,函数具体调用可以看这里。读取完两个要合并的图片后,(注意,这里合并的图片必须是相同的size和type,就是说图...
OpenCV在矩阵上的卷积

OpenCV在矩阵上的卷积

OpenCV在矩阵上的卷积2015-05-15在openCV官网上说是戴面具,其实就是重新计算一下矩阵中的每一个value,那么怎么计算呢,根据该像素点的周围信息,用一个加权的公式来进行计算。那么现在就要看,周围的信息是如何被加权的。让我们想一下这样的方式,请看下面的公式:上面的公式就是依据当前像素点的值和四个邻居的值,更新一下。相当于原来矩阵每一块3*3的小矩阵和M进行想乘一样。在程序中,我们对该公式进行编程的话,会是下面的代码。#include <...
OpenCV 矩阵:图像的基本

OpenCV 矩阵:图像的基本

OpenCV 矩阵:图像的基本2015-05-15我们有很多方式可以从现实生活中得到图片,数码相机,扫描仪,或者我们几乎人手有一部的手机。然而,当生活中的图在数字设备上存储的时候,一幅图片被分成了很多很多的像素点,像素点就像拼图的时候的碎片,一个个碎片来构成一副图。而每个像素点都是由一个0-255的数字值来表示。在openCV中,一个图片被很多像素点表示,这些表示像素点的值构成了一个矩阵。上面的图中,由表示像素点的值构成了矩阵,在openCV中,Mat(矩...
OpenCV, color reduction method

OpenCV, color reduction method

OpenCV, color reduction method2015-05-15目标:这次学习的目标是回答下面的几个问题:1 图片像素是如何被扫描的?2OpenCV 矩阵值如何被存储?3如何衡量算法的性能?4什么是查找表和为什么要用他们?看完这篇,希望能够解决上面的这些问题。正文:首先我们考虑一下简单的色彩降低方法(color reduction method,翻译的不好请指正),如果使用的是c或c++无符号的char(八字节大小的空间),一个信道(cha...
摄像机标定:矫正畸变

摄像机标定:矫正畸变

摄像机标定:矫正畸变2015-05-18之前做过摄像机标定的研究,不过现在忘了好多,昨天下午又捡起来,好好复习一下(主要是学习opencv一书内容)。摄像机标定基本知识:摄像机标定误差包括内参(4个)、畸变参数(径向和切向共5个)、外参(平移和旋转共6个)。误差参数分析:摄像机模型采用针孔模型成像模型,由于中心轴安装问题,这就造成了精度误差,就是所谓的相机内参数误差,使用一个3X3的矩阵表示(A) [fx 0 cx; 0 fy cy; 0 0 1].,有四...
<< 151 152 153 154 155 156 157 158 159 160 >>