自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 OpenGL相机

相机在前一章中,我们讨论了视图矩阵以及如何使用视图矩阵在场景中移动。OpenGL 本身并不熟悉相机的概念,但我们可以尝试通过将场景中的所有物体向相反的方向移动来模拟相机的概念,从而给人一种我们移动的错觉。在这一章中,我们将讨论如何在 OpenGL 中设置相机。我们将讨论一个可以让您在3D场景中自由移动飞行式相机。我们还将讨论键盘和鼠标输入,最后使用自定义相机类完成。相机/视图空间当我们谈论相机/视图空间时,我们谈论的是从相机角度作为场景起源的所有顶点坐标:视图矩阵将所有世界坐标转换为相对于相机位置和

2021-07-29 16:17:42 2226

原创 OpenGL显示3D立方体

OpenGL显示3D立方体坐标系统在上一章中,我们学会了如何通过变换矩阵变换所有顶点来发挥我们的优势。OpenGL 期望在每个顶点着色器运行后,所有我们希望可见的顶点都处于规范化的设备坐标中。即每个顶点的xyz坐标应在-1.0到1.0之间:此范围以外的坐标将不可见。我们通常做法是在我们自己确定的范围内(或空间)中指定坐标,并在顶点着色器中将这些坐标转换为规范化的设备坐标 (NDC)。然后,将这些NDC提供给光栅器以便将它们转换为屏幕上的 2D 坐标/像素。将坐标转换为 NDC 通常是逐步完成的,我们将

2021-07-28 15:18:21 2047

原创 OpenGL 变换

OpenGL 变换我们现在知道如何创建对象,为它们着色或使用赋予它们一个详细的外观,但它们仍然没有那么有趣,因为它们都是静态对象。我们可以尝试通过更改其顶点并重新配置每个帧的缓冲区来移动它们,但这很麻烦,并且需要相当多的处理能力。有更好的方法来转换对象,这是通过使用(多个)矩阵对象。矩阵是非常强大的数学结构,起初看起来很可怕,但一旦你习惯了它们,它们将被证明是非常有用的。在讨论矩阵时,我们将不得不深入研究一些数学知识。然而,要充分理解变换,我们首先必须在讨论矩阵之前深入研究向量。本章的重点是为您提供我

2021-07-23 15:17:11 309

原创 OpenGL纹理

OpenGL纹理我们了解到,为了给我们的对象添加更多细节,我们可以使用每个顶点的颜色来创建一些有趣的图像。然而,为了获得相当的真实感,我们必须有很多顶点,以便我们可以指定很多颜色。这会占用相当多的额外开销,因为每个模型都需要更多的顶点,并且每个顶点还需要一个颜色属性。艺术家和程序员通常更喜欢使用质地. 纹理是用于向对象添加细节的 2D 图像(甚至存在 1D 和 3D 纹理);把纹理想象成一张纸,上面有漂亮的砖块图像,整齐地折叠在你的 3D 房子上,这样你的房子看起来就像是石头外墙。因为我们可以在单个图像

2021-07-20 15:57:41 741

原创 OpenGL着色器

OpenGL着色器着色器是运行在 GPU 上的小程序。这些程序针对图形管道的每个特定部分运行。从基本意义上讲,着色器只不过是将输入转换为输出的程序。着色器也是非常孤立的程序,因为它们不允许相互通信。一、OpenGL着色语言–GLSL着色器是用类 C 语言 GLSL 编写的。GLSL 专为与图形一起使用而量身定制,并包含专门针对矢量和矩阵操作的有用功能。着色器总是以一个版本声明开始,然后是一个输入、输出、uniforms 变量列表, 和它的主要的功能。每个着色器的入口点都在我们处理任何输入变量并在其输

2021-07-20 11:13:26 1726 2

原创 OpenGL渲染三角形

OpenGL渲染三角形在 OpenGL 中,描述的是 3D 空间,但屏幕或窗口是一个 2D 像素阵列,因此 OpenGL 的大部分工作是将所有 3D 坐标转换为适合屏幕上的 2D 像素。将 3D 坐标转换为 2D 像素的过程由 OpenGL 的图形管道完成的。图形管道可分为两个大部分:第一部分将您的 3D 坐标转换为 2D 坐标,第二部分将 2D 坐标转换为实际彩色像素。图形管道以一组 3D 坐标为输入,并将这些坐标转换为屏幕上的彩色 2D 像素。图形管道可分为几个步骤,其中每个步骤都需要前一步的输出作

2021-07-19 17:49:53 871

原创 创建一个OpenGL窗口

创建一个OpenGL窗口在开始创建图形之前,我们需要做的第一件事就是创建一个 OpenGL 上下文和一个用于绘制的应用程序窗口。但是,这些操作是每个操作系统中特定的,OpenGL 有目的地试图从这些操作中抽象出来。这意味着我们必须创建一个窗口、定义上下文并处理用户输入。所需工具: GLFW库+VS2019+GLAD源码GLFW库GLFW 是一个用C 编写的库,专门针对 OpenGL,GLFW是一个开源的跨平台窗口库。它封装了与操作系统相关的创建窗口的过程,为我们提供了向屏幕渲染所需的基本必需品。它

2021-07-15 18:31:07 410

原创 初识OpenGL

OpenGL说到OpenGL,很多人会以为是一个API(一个应用程序接口),OpenGL并不是一个API,而是一个规范,这个规范是由Khronos Group开发和维护。OpenGL规范了每个函数传入的参数和输出结果以及其应该如何执行。所以只要合乎规范,实际开发的OpenGL版本可以有不同的实现。开发实际 OpenGL 库的人通常是显卡制造商。您购买的每个显卡都支持 OpenGL 的特定版本,这是专门为该卡(系列)开发的 OpenGL 版本。由于大多数实现是由显卡制造商构建的,因此每当实现中出现错误时,

2021-07-15 17:00:20 270 2

原创 ubuntu16.06用pyenv安装python时出现BUILD FAILED (Ubuntu 16.04 using python-build 20180424)问题

ubuntu16.06用pyenv安装python时出现BUILD FAILED (Ubuntu 16.04 using python-build 20180424)问题问题:ubuntu16.04安装好pyenv后输入:pyenv install 3.6.1出现:kr@kr:~$ pyenv install 3.6.1Downloading Python-3.6.1.tar.xz...

2019-12-28 11:54:58 3240 1

原创 MTCNN中P_Net特征映射关系解析

PNet是全卷积网络,主要为了应对不同输入尺度,最后输出的为W×H×2,W×H×4两个特征图,其中W×H×4为候选框的在特征图中的位置坐标,需要将它们映射到原始图像中,接下来对这个映射关系进行解析。一、什么是感受野卷积神经网络CNN中,某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。感受野的大小是由kernel size,stride,paddin...

2019-10-15 08:53:38 1061

原创 MTCNN中构建图像金字塔

MTCNN中构建图像金字塔MTCNN在进行人脸检测任务时,输入是一张图像,输出图像中人脸所在位置的Bounding Box。MTCNN基于卷积神经网络,通常只适用于检测一定尺寸范围内的人脸,比如其中的P-Net,用于判断12×12大小范围内是否含有人脸,但是输入图像中人脸的尺寸未知,需要构建图像金字塔获得不同尺寸的图像,缩放图像是为了将图像中的人脸缩放到网络能检测的适宜尺寸,只要某个人脸被放缩到...

2019-09-26 17:09:03 3830 2

原创 C++ opencv4.1实现人脸检测

C++ opencv4.1实现人脸检测本文采用opencv4.1中haarcascades文件下存放的Haar特征的级联分类器(Cascade Classfier)进行人脸检测。代码实现:

2019-09-16 14:13:16 2776 3

原创 Win10安装Ubuntu子系统教程

从Build 14393版本(Win10 1607周年更新版)开始,Windows10已经原生支持Linux了,今天就来分享一下如何在Windows10中安装Ubuntu子系统。win10下安装Ubuntu子系统一、Windows 添加ubuntu子统打开控制面板—>程序—>启用或关闭windows功能—>勾选适用windows的linux的子系统二、“开发人员模式”为...

2019-06-25 10:42:49 3131

原创 [ubuntu下python环境搭建] 使用pyenv与virtualenv搭建单机多版本python虚拟环境开发

在ubuntu下使用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境 pyenv可以帮助你在同一开发机上搭建多个版本的python环境, 并进行方便的切换; virtualenv则可以将一个目录建立为一个虚拟的python环境, 这样的话, 用户可以建立多个虚拟环境, 每个环境里面的python版本可以是不同的, 也可以是相同的, 而且环境之间相互独立。大体...

2019-01-05 19:34:25 506 2

原创 HOG特征提取算法原理

1.算法基本流程  在一幅图像中,方向梯度直方图(Histogram of Oriented Gradient, HOG)能够很好地描述局部目标区域的特征,是一种常用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。在HOG中,对一幅图像进行了如下划分: 图像(image)->检测窗口(win)->图像块(block)->细胞单元(cells) 流程图如下: ...

2018-07-19 18:01:56 35851

原创 C++11多线程编程基础入门

1.在C++11中创建新线程  在每个c++应用程序中,都有一个默认的主线程,即main函数,在c++11中,我们可以通过创建std::thread类的对象来创建其他线程,每个std :: thread对象都可以与一个线程相关联,只需包含头文件< thread>。可以使用std :: thread对象附加一个回调,当这个新线程启动时,它将被执行。 这些回调可以为函数指针、函数对象、...

2018-07-19 09:36:35 10248 3

原创 Linux C++多线程编程

1.介绍  使用多线程的理由之一是和进程相比,它是一种非常”节俭”的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而运行一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程,而且,线程间彼此切换所需的时间也...

2018-07-17 15:59:34 3395

原创 使用Markdown编辑器写博客

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-07-17 10:21:35 182

原创 目标跟踪KCF学习笔记-公式推导

1. 脊回归 设训练样本集为(xi, yi),其线性回归函数

2018-07-11 20:01:30 4386 2

原创 核技巧(Kernel trick)解析

1. 脊回归 设训练样本集为(xi, yi),其线性回归函数

2018-07-11 09:40:16 21185 2

原创 ubuntu下Clion破解

1. 选用 activation code 激活 当Clion需要激活时,打开Clion会弹出 Clion License Activation对话框(同时也可以在安装完软件后,启动,依次点击菜单栏 ⇒ help ⇒ regiser),在弹出的Clion License Activation对话框选择 activation code ,接下来就需要获得注册码; 2. 获取注册码 ...

2018-07-09 15:04:41 35527 7

原创 NMS 非极大值抑制的原理与C++代码实现

原理:对于Bounding Box的列表B及其对应的置信度S,选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的IoU大于阈值Nt的框从B中移除.重复这个过程,直到B为空实现过程:就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制:先假设有6个候选框,根据分类器类别分类概率做排序,从小...

2018-07-06 12:05:29 7531 11

原创 Python 配置--安装ROS Kineti后,如何才能正确的import cv2

[Python配置]ubuntu16.04安装完 ROS Kinetic 后,打开虚拟环境(我是用pyenv 与virtualenv搭建的python虚拟环境)或系统自带的python 3.x 后 import cv2时出现Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linuxType "help"...

2018-06-15 10:20:54 3143 1

空空如也

空空如也

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

TA关注的人

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