C/C++
文章平均质量分 90
C/C++相关
TracelessLe
BetterLife,BetterWorld.
展开
-
泊松融合进阶——DFT求解二维泊松方程
前言泊松融合(Poisson Blending)是图像处理领域著名的图像融合算法,自从2003年发表以来,有很多基于此算法的应用和改进研究出现。泊松融合无需像Alpha blending一样的精确抠图就可以得到很自然的结果。关于泊松融合原理部分的解析见之前的博客《泊松融合原理浅析》。关于针对OpenCV中泊松融合的实现代码(以normalClone为例)进行解读的部分见之前的博客《OpenCV源码解读:泊松融合seamlessClone(normalClone)》。在上文中有提到,OpenCV的整原创 2021-05-24 14:24:12 · 5312 阅读 · 2 评论 -
VS Code配置远程开发与调试支持
前言Visual Studio Code(简称VS Code)是一个由微软开发,同时支持Windows 、 Linux和macOS等操作系统的免费代码编辑器,它支持调试,并内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全、代码片段和代码重构等。该编辑器支持用户个性化配置,例如改变主题颜色、键盘快捷方式等各种属性和参数,同时还在编辑器中内置了扩展程序管理的功能。VS Code优势明显,通过日益丰富的插件,VS Code可以配置成各种开发环境,可以说其就像是一把瑞士军刀。越来越多的开发者开原创 2021-02-09 14:42:03 · 358 阅读 · 0 评论 -
仿射变换(AffineTransform)与仿射矩阵
前言仿射变换(Affine transformation),又称仿射映射,是指在几何中,对一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。它是一种二维坐标到二维坐标间的线性变换,保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。任意的仿射变换都能表示成“乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式”。仿射变换仿射矩阵逆仿射变换与其矩阵参考资料[1] 仿射变原创 2021-02-09 14:04:16 · 29958 阅读 · 4 评论 -
NVIDIA CUDA核函数编写及CUDA API调用注意事项之In-place
引言CUDA(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,是其对于GPGPU(A General-Purpose Graphics Processing Unit)的正式名称。通过该技术,开发者可以利用NVIDIA的GeForce 8以后的GPU进行计算。极大加速计算型应用的效率。通常用于游戏开发、视频编解码、图像处理等领域。问题分析在编写CUDA核函数时,或者直接调用CUDA封装好的API时,通常会有需要in-plac原创 2021-02-08 11:53:24 · 813 阅读 · 0 评论 -
OpenCV版泊松融合seamlessClone融合结果1像素偏差问题记录与分析
前言泊松融合(Poisson Blending)是图像处理领域著名的图像融合算法,自从2003年发表以来,有很多基于此算法的应用和改进研究出现。泊松融合无需像Alpha blending一样的精确抠图就可以得到很自然的结果。关于泊松融合原理部分的解析见之前的博客《泊松融合原理浅析》。关于针对OpenCV中泊松融合的实现代码(以normalClone为例)进行解读见之前的博客《OpenCV源码解读:泊松融合seamlessClone(normalClone)》。在使用泊松融合OpenCV实现的方法时原创 2021-02-07 19:41:03 · 1670 阅读 · 0 评论 -
OpenCV源码解读:泊松融合seamlessClone(normalClone)
前言泊松融合(Poisson Blending)是图像处理领域著名的图像融合算法,自从2003年发表以来,有很多基于此算法的应用和改进研究出现。泊松融合无需像Alpha blending一样的精确抠图就可以得到很自然的结果。关于泊松融合原理部分的解析见之前的博客《泊松融合原理浅析》。本文将针对OpenCV中泊松融合的实现代码(以normalClone为例)进行解读。代码解读函数定义void cv::seamlessClone ( InputArray src, InputArr原创 2021-02-05 09:48:34 · 3960 阅读 · 4 评论 -
OpenCV源码解读:Mat与GpuMat的内存拷贝(copyTo和clone)
前言OpenCV基础类型Mat以及GPU上的GpuMat是整个OpenCV工程体系中两种非常基础常用的类型。通常情况下Mat拥有的方法,GpuMat都会有对应的方法。对于内存拷贝,有两个常用的方法copyTo()和clone(),在使用的时候需要特别注意。MatcloneMat Mat::clone() const{ Mat m; copyTo(m); return m;}copyTovoid Mat::copyTo( OutputArray _dst ) co原创 2021-02-04 17:17:35 · 3634 阅读 · 0 评论 -
使用OpenCV自带gen2.py等工具生成C++的Python binding示例
前言C++作为一种编译型语言,在其设计之初就偏重于性能、效率和灵活性,偏向应用于系统编程、嵌入式、资源受限的软件和系统。Python作为一种解释型语言,内置了如str, tuple, list, dict等常用数据结构,支持自动垃圾回收,拥有简洁的语法、丰富的内置库和第三方库,被越来越广泛地使用在各种场景中。但Python在高便捷性的同时无可避免的缺乏高性能。在部分应用场景中,我们需要在Python的灵活性上架构应用,底层算法希望借助C++的高性能, 那么我们可以考虑将C++开发的模块做成Python原创 2021-01-20 17:34:03 · 918 阅读 · 0 评论 -
从make到cmake,C++工程编译链接简易记录
前言对于C++工程开发,免不了的过程就是编译链接最后生成可执行文件。那么make和cmake命令则是必不可少的,对应的规则文件则是Makefile和CMakeList.txt。介绍从gcc到make,再到cmake,一切只为了工程生成可执行文件的过程更简单。gccmake底层调用的是gcc(GNU Compiler Collection,GNU编译器套件),可以简单的认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等)。当工程只有一个源文件时,原创 2021-01-16 15:52:28 · 513 阅读 · 0 评论 -
NVIDIA CUDA核函数及结合OpenCV的使用入门示例
引言CUDA(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,是其对于GPGPU(A General-Purpose Graphics Processing Unit)的正式名称。通过该技术,开发者可以利用NVIDIA的GeForce 8以后的GPU进行计算。极大加速计算型应用的效率。通常用于游戏开发、视频编解码、图像处理等领域。CUDA is a parallel computing platform and progra原创 2020-12-23 21:49:39 · 1583 阅读 · 0 评论 -
使用pybind11生成C++的Python binding示例
C++作为一种编译型语言,在其设计之初就偏重于性能、效率和灵活性,偏向应用于系统编程、嵌入式、资源受限的软件和系统。Python作为一种解释型语言,内置了如str, tuple, list, dict等常用数据结构,支持自动垃圾回收,拥有简洁的语法、丰富的内置库和第三方库,被越来越广泛地使用在Python是一种解释型语言,同样也支持不同的编程范式。原创 2020-12-06 17:01:27 · 1363 阅读 · 0 评论 -
C++使用OpenCV的glob方法读取文件夹下的所有文件
前言OpenCV —— Open Source Computer VisionOpenCV是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。在使用C++调用OpenCV接口时,我们有时会有类似Python下的glob.glob方法获取某个文件路径下的所有文件的需求,在OpenCV中这一具体方法可以通过调用cv::glob()实现。使用#include <iostream&g原创 2020-11-26 20:44:12 · 7450 阅读 · 0 评论 -
C++使用OpenCV时计算MSE
前言OpenCV —— Open Source Computer VisionOpenCV是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。在使用C++调用OpenCV接口时,我们经常会有对函数或者代码块的执行进行计时的需求。在图像处理任务中,评价图像质量标准一般使用MSE(Mean Square Error ,均方误差)和 PSNR(Peak Signal Noise Ratio原创 2020-11-26 20:26:12 · 1520 阅读 · 0 评论 -
C++使用OpenCV的计时方法
前言OpenCV —— Open Source Computer VisionOpenCV是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。在使用C++调用OpenCV接口时,我们经常会有对函数或者代码块的执行进行计时的需求。其实在OpenCV内部有cv::getTickCount()和cv::getTickFrequency()函数来测量时间。其中cv::getTickCount原创 2020-11-26 19:56:27 · 1205 阅读 · 0 评论 -
Ubuntu上安装opencv-cuda加速
前言OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。OpenCV的主要目标是:为推进机器视觉的研究,提供一套开源且优化的基础库。不重造轮子。提供一个共同的基础库,使得开发人员的代码更容易阅读和转让,促进了知识的传播。透过提供不需要开源或免费的软件许可,促进商业应用软件的开发。Open原创 2020-08-24 23:51:25 · 3870 阅读 · 2 评论