OpenCV
文章平均质量分 88
OpenCV相关
TracelessLe
BetterLife,BetterWorld.
展开
-
基于GStreamer和FFmpeg的OpenCV安装和使用
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。本文简要介绍基于gstream和FFmpeg的opencv安装和使用。原创 2022-09-21 10:36:52 · 3029 阅读 · 0 评论 -
使用Python对GIF读取、生成、压缩和加水印
环境说明Python环境下对GIF文件进行读取、生成、压缩和加水印,主要使用到的包有:cv2imageiopygifsicleffmpeg读取__author__ = "TracelessLe"import cv2import osimport numpy as npclass GIF(): def __init__(self, file_path): self.file_path = file_path self.material = [原创 2022-04-13 17:20:22 · 2029 阅读 · 0 评论 -
检查OpenCV是否使用TBB库编译
前言TBB全称Threading Building Blocks,是Intel针对基于多核处理器软件开发的C++模板库,核心作用是用来在任务处理中做多线程加速。OpenCV提供了接口来编译和使用TBB。关于更多TBB的优势见参考资料[6]和[7]。OpenCV基于TBB编译在Cmake配置编译选项中指定-D WITH_TBB=ON,例如 :cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_C_COMPILER=/usr/bin/gcc \-D CMAKE原创 2022-04-08 17:49:37 · 5318 阅读 · 0 评论 -
拉普拉斯金字塔融合原理浅析
前言拉普拉斯金字塔融合(Laplacian Pyramid Blending)也称为多频带融合(Multi-band Blending),可以看做是对Alpha融合的一种改进,避免出现鬼影(Ghosting)和截断(Seams)现象。方法原理图像可以认为是由不同频率的信息组成,包含了很多不同的特征,频谱跨度很大。图像中的低频信号和高频信号也叫做低频分量和高频分量。图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓);图像中的低频分量,指的是图像强度(亮度原创 2021-10-08 17:09:05 · 8526 阅读 · 0 评论 -
使用cuFFT求解傅里叶变换时的最优尺寸选择
前言傅里叶变换(Fourier Transform)是数字信号处理领域中一个非常重要的数学变换方法,用来实现信号从时域到频域的变换过程。离散傅里叶变换(Discrete Fourier Transform,DFT)是连续傅里叶变换在离散系统中的表示形式,由于其计算量大,在很长一段时间内其应用受到了极大限制。快速傅里叶变换(Fast Fourier Transform,FFT),是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法。是由Cooley和Tukey于20世纪60年代(1965年)合作发表原创 2021-10-08 13:55:03 · 1623 阅读 · 0 评论 -
OpenCV报错“TypeError: Expected cv::UMat for argument ‘img‘”
前言OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。问题当使用OpenCV函数cv2.putText()时突然报错:Traceback (most recent call last):File "test.py", line 138, in func cv2.putText(img_b原创 2021-06-28 20:02:29 · 1027 阅读 · 0 评论 -
泊松融合进阶——DFT求解二维泊松方程
前言泊松融合(Poisson Blending)是图像处理领域著名的图像融合算法,自从2003年发表以来,有很多基于此算法的应用和改进研究出现。泊松融合无需像Alpha blending一样的精确抠图就可以得到很自然的结果。关于泊松融合原理部分的解析见之前的博客《泊松融合原理浅析》。关于针对OpenCV中泊松融合的实现代码(以normalClone为例)进行解读的部分见之前的博客《OpenCV源码解读:泊松融合seamlessClone(normalClone)》。在上文中有提到,OpenCV的整原创 2021-05-24 14:24:12 · 5312 阅读 · 2 评论 -
face_alignment库获取人脸图片landmark示例
前言face_alignment是Python环境下一个用于检测人脸关键点(landmark)的常用的库。基于FAN方法实现,具有2D和3D关键点检测的能力。方法示例face-alignment库获取输入图片中的人脸关键点,图片输入格式为RGB通道顺序格式,因此如果用OpenCV读取图片后需要注意转换通道顺序,如果是用skimage.io读取则不用转换通道顺序。2D test on CPUimport cv2import face_alignmentdef cv_draw_landmark原创 2021-04-22 15:09:29 · 5506 阅读 · 10 评论 -
仿射变换(AffineTransform)与仿射矩阵
前言仿射变换(Affine transformation),又称仿射映射,是指在几何中,对一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。它是一种二维坐标到二维坐标间的线性变换,保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。任意的仿射变换都能表示成“乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式”。仿射变换仿射矩阵逆仿射变换与其矩阵参考资料[1] 仿射变原创 2021-02-09 14:04:16 · 29958 阅读 · 4 评论 -
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 评论 -
泊松融合原理浅析
前言参考资料[1] OpenCV Docs - Seamless Cloning[2] OpenCV GitHub - opencv/modules/photo/src/seamless_cloning.cpp[3] OpenCV GitHub - opencv/modules/photo/src/seamless_cloning_impl.cpp[4] csdn - 图像处理(十二)图像融合(1)Seamless cloning泊松克隆-Siggraph 2004[5] 知乎 - 12. 泊松原创 2021-02-04 15:03:22 · 10651 阅读 · 0 评论 -
结合OpenCV和CUDA扩展自定义函数接口之导向滤波算法实现
声明:本文内容原创,首发于CSDN博客。未经许可禁止转载。需要更多帮助请私信或邮件联系。前言CUDA(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,是其对于GPGPU(A General-Purpose Graphics Processing Unit)的正式名称。通过该技术,开发者可以利用NVIDIA的GeForce 8以后的GPU进行计算。极大加速计算型应用的效率。通常用于游戏开发、视频编解码、图像处理等领域。Ope.原创 2021-01-23 17:27:39 · 513 阅读 · 1 评论 -
使用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 评论 -
导向滤波原理浅析
前言在图像处理上,导向滤波器(Guided Image Filter)是一种能使图像平滑化的非线性滤波器。与双边滤波器(Bilateral Filter)相同,这个滤波器同样能够在清楚保持图像边界的情况下,达到让图像平滑的效果。但不同于双边滤波器,导向滤波器有两个优点:首先,双边滤波器有非常大的计算复杂度(O(N^2)),但导向滤波器因为并未用到过于复杂的数学计算,有线性的计算复杂度。双边滤波器因为数学模型的缘故,在某些时候会发生梯度反转(gradient reverse)的状况,出现图像有损;原创 2021-01-19 21:00:08 · 4296 阅读 · 0 评论 -
双边滤波原理浅析
前言双边滤波(Bilateral filtering)是一种结合了图像像素空间位置关系和像素值大小的非线性组合的保边滤波算法,无需迭代计算,操作简单。从原理上讲,图像领域的滤波通常意义是希望去除噪声,使图像更加平滑。而传统的均值滤波、高斯滤波等只考虑空域,认为临近像素应该拥有相近的特性,这种假设在图像中的Edge处则不满足,如果仍用这种方式滤波则必定会导致边缘被模糊掉。为了达到保边效果,双边滤波通过结合空域和值域,在保证滤波效果的同时保持了边缘。对于双边滤波实际的应用场景,部分情况下可以用于人脸磨皮美颜。原创 2021-01-16 18:07:50 · 2426 阅读 · 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 评论 -
Python下OpenCV包需要注意看清楚来源
问题及解决方案在Python环境下,以往一直使用pip安装的方式安装的OpenCV。pip install opencv-python没有注意以此方式安装的并不是官方版,而是一个个人维护的库。作者其实也写明了这是一个“Unofficial pre-built OpenCV packages for Python.”,只是一直觉得安装着方便,没有注意这一点。直到前些阵子发现使用cv2.VideoCapture()函数时,针对同一视频,不同版本的OpenCV读出来的视频帧数不一致,特别是某一版本读原创 2020-08-27 15:18:28 · 356 阅读 · 0 评论 -
Ubuntu上安装opencv-cuda加速
前言OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。OpenCV的主要目标是:为推进机器视觉的研究,提供一套开源且优化的基础库。不重造轮子。提供一个共同的基础库,使得开发人员的代码更容易阅读和转让,促进了知识的传播。透过提供不需要开源或免费的软件许可,促进商业应用软件的开发。Open原创 2020-08-24 23:51:25 · 3870 阅读 · 2 评论 -
【持续更新】Python和C++下OpenCV使用小记
OpenCV—— Open Source Computer Vision使用示例:导入OpenCVimport cv2读取图片与写图片pic = cv2.imread(pic_path)cv2.imwrite(pic_path, pic)调整尺寸pic2 = cv2.resize(pic, (250, 250), interpolation=cv2.INTER_CUBIC)多通道合成图片import numpy as npb_channel = np.ones.原创 2020-08-11 20:49:12 · 702 阅读 · 0 评论 -
【冷知识】椒盐噪声与胡椒和盐的关系
百度百科:椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。椒盐噪声英文名叫salt and pepper noise,也就是盐和胡椒噪声。在分类上分为盐噪声和胡椒噪声。其实就是图像中随机的一些像素为黑色(0)或者白色(255)。其中盐噪声又称.原创 2020-06-08 20:44:34 · 4758 阅读 · 1 评论 -
在Windows下的Python与OpenCV安装调试
步骤一:安装python2.7.x 前往python.org官网下载python2.7.x安装。步骤二:NumPy下载 前往http://sourceforge.net/projects/numpy/files/NumPy/1.9.1/ 下载之后安装。步骤三:OpenCV下载 前往https://sourceforge.net/projects/opencvlibrary/files/ope原创 2016-11-18 16:50:04 · 595 阅读 · 0 评论