
opencv
文章平均质量分 89
鱼儿-1226
离家千里,出了地铁口,万家灯火。
多年从事于音视频相关直播行业,使用 windows / linux系统,熟练使用c++、c#、opengl、unity3d、UE、cocos、ffmpeg、directshow、obs、鼠标键盘钩子、汇编、逆向(爬虫) 等。
展开
-
opencv 学习之 图像色偏、清晰度、亮度检测
方法一计算图片在灰度图上的均值和方差当存在亮度异常时,均值会偏离均值点(可以假设为128),方差也会偏小;通过计算灰度图的均值和方差,评估图像是否存在过曝光或曝光不足int light(string imgName){ //Mat 转 IplImage Mat M= imread(imgName); IplImage *image = &IplImage(M); IplImage * gray = cvCreateImage(cvGetSize(image)...原创 2021-09-17 10:31:41 · 3497 阅读 · 0 评论 -
OpenCV --- 皮肤检测技术
方法一:基于RGB的皮肤检测根据RGB颜色模型找出定义好的肤色范围内的像素点,范围外的像素点设为黑色。查阅资料后可以知道,前人做了大量研究,肤色在RGB模型下的范围基本满足以下约束:在均匀光照下应满足以下判别式:R>95 AND G>40 B>20 AND MAX(R,G,B)-MIN(R,G,B)>15 AND ABS(R-G)>15 AND R>G AND R>B在侧光拍摄环境下:R>220 AND G>210 AND B&g原创 2021-08-24 10:13:19 · 1721 阅读 · 0 评论 -
OpenCV for Matlab Users (2) - cv::Mat 类的属性和方法
目前成员变量只有 5 个:rows,cols,dims,data,step,还有一些比如像 channels,depth,elemSize,empty,isContinuous,size,total,type 貌似是成员变量,其实是没有参数的成员方法。1. 成员变量 rows 成员变量,返回矩阵的行数 int imgRows = img.rows; std::cout<<"imgRows = "<<imgRows<<std::end.原创 2021-03-09 15:12:19 · 570 阅读 · 0 评论 -
OpenCV 2 计算机视觉编程手册
第1章 接触图像第2章 操作像素第6章 图像滤波附录 OpenCV3 介绍及代码导读勘误我的困惑下一步计划<div id="Section1">第1章 接触图像</div>OpenCV 库的结构 载入、显示及保存图像OpenCV 库的结构sources文件夹下的子文件夹: doc 文件夹中包含的是文档 + include 文件夹中是所有头文件 modules 文件夹中包含所有的源程序 samples 文件夹中则是许多简短的学习用范例 第 2 页讲了下原创 2021-03-09 15:11:26 · 3510 阅读 · 0 评论 -
OpenCV学习之路(二)——Mat对象
早期的 OpenCV 中,使用 IplImage 和 CvMat 数据结构来表示图像。IplImage和 CvMat 都是 C 语言的结构。使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何时需要申请内存,何时需要释放内存。这个开发者带来了一定的负担,开发者应该将更多精力用于算法设计,因此在新版本的 OpenCV 中引入了 Mat 类。新加入的 Mat 类能够自动管理内存。使用 Mat 类,你不再需要花费大量精力在内存管理上。而且你的代码会变得很简洁,代码行数会变少。但 C++接口唯一的不足是原创 2021-03-09 15:10:28 · 613 阅读 · 0 评论 -
OpenCV拾趣(二)——Qt嵌入OpenCV
在Qt开发环境中引入OpenCV 实现OpenCV图像数据到Qt图像数据的转化工具 实现一个简单的图片浏览工具搭建开发环境首先明确一下接下来的例子使用的开发环境:操作系统:Ubuntu 16.04 OpenCV版本:3.3.1 Qt版本:5.10.0 IDE:Qt Creator 4.5.0Qt Creator作为Qt自家的IDE,对Qt本身的支持是自不用说的。那么如何将OpenCV添加到开发环境里呢?OpenCV官方很贴心的提供了pkg-config的配置——如果是按照上一节规划原创 2021-03-09 15:09:31 · 797 阅读 · 0 评论 -
了解人脸识别和二维码识别
人脸识别方案CoreImage (二维码识别,人脸识别) face++ 2014阿里 收费(两种方案本地计算 服务器计算) 腾讯优图 OpenCV (人脸识别 滤镜等) libefacedetection c++ AVFoundation vision 面部检查 iOS11.0以上这里主要了解AVFoundation的人脸识别tips:视频采集上文已经讲过,这里不再赘述1.视频采集2.配置Session,添加一个元数据的输出3.指定检测的元数据类型(人脸,二维码,一维码)4.开原创 2020-11-26 13:53:57 · 4931 阅读 · 0 评论 -
cmake编译iOS/android/mac的opencv库(八)
编译环境操作系统:Mac OS X 10.15.4 (19E266) XCode :Version 11.4 (11E146) cmake :cmake version 3.10.2 python:3.7.4_1准备工作1、下载源码// 下载opencv_master源码git clone https://github.com/opencv/opencv.git opencv_mastergit checkout -b my-4.3.0 4.3.0// 下载opencv_.原创 2020-10-30 10:17:23 · 749 阅读 · 0 评论 -
OpenCV开发笔记(七十):编译VS2017x64版本的openCV4
opencv_contrib是opencv提供额外的工具,提供一些基础算法,之前编译了不带opencv_contrib的版本,不带opencv_contrib的cuda硬加速版本, opencv+opentrib的版本。OpenCV4是最新的版本,编译一个openCV4的msvc版本。版本汇总- Qt5.2.0 mingw32 + Opencv2.4.10 版本《OpenCV开发笔记(〇):使用mingw530_32编译openCV3.4.1源码,搭建Qt5.9.3的openCV开发环境》原创 2020-10-26 10:30:45 · 311 阅读 · 0 评论 -
OpenCV开发笔记(七十一):红胖子8分钟带你深入级联分类器训练
本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/109096211各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)OpenCV开发专栏(点击传送门)上一篇:《OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的op原创 2020-10-23 10:57:10 · 339 阅读 · 0 评论 -
实现《你的名字》同款滤镜,python+opencv
好久没有上简书,最近上来一看发现这篇文章阅读量远超了其他的文章,还有评论提到说在讲技术的时候卖萌不好。哈哈,当时写的时候完全没想过会有人搜到看,只是为自己的作品留个念想,所以文风比较散漫随意。于是这次来小修了一遍,谢谢阅读~前很长一段时间,时光相册火了一个应用《你的名字》同款滤镜,一时间这种鲜艳靓丽的卡通天空滤镜刷遍了QQ空间朋友圈。时光相册的效果是这样的。左:原图,右:滤镜图他们在新闻采访中说自己和prisma一样用到了深度学习的技术,不过是用在了天空区域提取上。我初步理解下.原创 2020-08-27 10:51:48 · 1290 阅读 · 2 评论 -
[OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (二)
34 角点检测的 FAST 算法目标 ? 理解 FAST 算法的基础 ? 使用 OpenCV 中的 FAST 算法相关函数进行角点检测原理 我们前面学习了几个特征检测器,它们大多数效果都很好。但是从实时处理的角度来看,这些算法都不够快。一个最好例子就是 SLAM(同步定位与地图构建),移动机器人,它们的计算资源非常有限。为了解决这个问题,Edward_Rosten 和 Tom_Drummond 在 2006 年提出里 FAST 算法。我们下面将会对此算法进行一个简单的介绍。你可以参考原始文原创 2020-08-03 10:30:33 · 631 阅读 · 0 评论 -
利用OpenCV进行图像配准
项目代码:GitHub:team79/ImageRegistration图像配准类:文件:ImageRegistration.hImageRegistration.cppclass ImageRegistration { Mat src1; Mat src2; void getRegistrationMat(); Mat transMatrix;public: void init(Mat,Mat); Point2f getXY(int,...原创 2020-08-03 10:29:35 · 2916 阅读 · 0 评论 -
Opencv drawContours函数用于绘制和填充
在opencv中当我们使用一些基于连通域或者基于边沿信息的时候,往往会对contour进行处理除了利用findContours函数寻找连通域之外,也需要对连通域进行填充等操作这里介绍下drawContours函数,自己也是不断摸索和查阅了opencv相关手册drawContours 在图像中绘制外部和内部的轮廓。drawContours(InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scal...原创 2020-08-03 10:29:04 · 3320 阅读 · 0 评论 -
轮廓提取findContours和绘制drawContours
首先感谢以下两位的博文帮助我的理解:(1)-牧野-http://blog.youkuaiyun.com/dcrmg/article/details/51987348(2)塬莱 http://blog.youkuaiyun.com/maomao1011120756/article/details/49794997void findContours//提取轮廓,用于提取图像的轮廓(InputOutputArray image,//输入图像,必须是8位单通道图像,并且应该转化成二值的OutputArr...原创 2020-08-03 10:28:29 · 1001 阅读 · 0 评论 -
opencv学习(四十)之寻找图像轮廓findContours()
1.概述在这篇文章中介绍如何使用findContours()函数寻找图像中物体的轮廓,在OpenCV中没有给出findCountours()函数的原理,如果想了解查找轮廓原理,可以翻**墙出去Google”Topological structural analysis of digitized binary images by border following”,这里就不一一翻译了.2.APIopencv中提供findContours()函数来寻找图像中物体的轮廓,并结合drawContours原创 2020-08-03 10:27:49 · 1299 阅读 · 0 评论 -
OpenCV基础——threshold函数的使用
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();注意:作者采用OpenCV 3.0.0函数原型参数说明src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)dst:输出图像thresh:阈值maxval:dst图像中最大值type:..原创 2020-08-03 10:27:09 · 1604 阅读 · 0 评论 -
前景检测算法_4(opencv自带GMM)
前景检测算法_4(opencv自带GMM) 前面已经有3篇博文介绍了背景减图方面相关知识(见下面的链接),在第3篇博文中自己也实现了gmm简单算法,但效果不是很好,下面来体验下opencv自带2个gmm算法。 opencv实现背景减图法1(codebook和平均背景法) http://www.cnblogs.com/tornadomeet/archive/2012/04/08/2438158.html opencv实现背景减图法2(帧差法) http://www.cnblogs原创 2020-08-03 10:26:31 · 367 阅读 · 0 评论 -
基于OpenCV的图像配准之后的透视变换
??在通过SIFT、SURF或者ORB进行特征点检测,生成了特征点和特征点描述子的vector后,如何进一步的进行对于图像的矫正。这个时候就用到了opencv的另外两个函数findHomography和perspectiveTransform。??findHomography是用来计算两张图像的单应性矩阵的。opencv的官方文档中有详细的使用说明:??前两个参数分别是通过之前的特征检测找到的特征点,第三个参数为计算单应性矩阵的方法,默认为使用所有的点。第四个参数仅在第三个参数为CV_RANSAC时..原创 2020-07-31 10:32:59 · 704 阅读 · 0 评论 -
opencv(21)---轮廓属性特征以及应用之凹包
凸包基本概念凸包(Convex Hull)是一个计算机几何图形学中的概念, 简单来说, 给定二维平面点集, 凸包就是能够将最外层的点连接起来构成的凸多边形, 它能够包含点集中所有的点。物体的凸包检测场应用在物体识别、手势识别及边界检测等领域。寻找凸包—convexHull()函数原型1points: 输入的二维点集, 可以填Mat类型或std::vector hull: 函数调用后找到的凸包 clockwise: 操作方向标志符, 当为true时, 输出的凸包.原创 2020-07-31 10:32:29 · 1299 阅读 · 0 评论 -
opencv(28)---GrabCut & FloodFill图像分割
GrabCut图像分割算法基本概念OpenCV中的GrabCut算法是Graphcut算法的改进, Graphcut是一种直接基于图割算法的图像分割技术, 仅仅需要确认前景和背景输入, 该算法就可以完成前景和背景的最优分割, 算法依据《“GrabCut” - Interactive Foreground Extraction using Iterated Graph Cuts》这篇文章来实现的。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息, 只要少量的用户交互操作即可得到比较好的分割结果,原创 2020-07-31 10:31:55 · 364 阅读 · 0 评论 -
基于opencv的人脸性别识别
基于opencv的人脸性别识别主要包含三部分:人脸检测、特征提取、性别分类。一、开启摄像头1、新建工程并配置OpenCv(注意工程类型选择win32控制台应用程序)2、包含头文件#include <opencv2\opencv.hpp>using namespace cv;using namespace std;1 2 3 43、初始化一个摄像头捕捉器 首先,需要建立一个摄像头捕捉器,并将其与当前设备中的摄像头相关联:CvCapture* cap...原创 2020-07-31 10:30:38 · 2474 阅读 · 0 评论 -
OpenCV学习:找出人脸,同时比较两张图片中的人脸相似度
终于到了有实际应用的功能了,有2张图片,里面各有一个人脸,我的目的是比较这两个人脸的相似度,这里用到了facedetect的功能,还有图像转换,图像剪切,以及直方图的比较。具体流程是: 1。分别用facedetect功能将两张图片中的人脸检测出来 2。将人脸部分的图片剪切出来,存到两张只有人脸的图片里。 3。将这两张人脸图片转换成单通道的图像 4。使用直方图比较这两张单通道的人脸图像,得出相似度。 这里对图的要求还是比较高的,光线和姿势不能有差别,脸的垂...原创 2020-07-31 10:30:02 · 4603 阅读 · 0 评论 -
Chroma from Luma 预测方法总结
1.术语IPP:Inter plane prediction CCP:Cross component predition CCLM:Cross-component linear model prediction CfL:Chroma from luma 2.背景因为原来发的paper是基于RGB编码,看过相关性的paper;也就在那段时间,range extension software引入了CCP。最早是RGB编码中的inter plane prediction,由Woo原创 2020-07-30 10:18:14 · 695 阅读 · 0 评论 -
opencv 绿幕视频背景替换
基于hsv颜色空间的实时背景替换: #include<opencv2\opencv.hpp> using namespace cv; Mat replace_and_blend(Mat &frame, Mat&mask); Mat background,frame, hsv, mask,result; int main(int arc, char** argv) { background = imrea..原创 2020-07-29 10:13:24 · 1209 阅读 · 1 评论 -
opencv学习笔记五十九:图像融合之背景替换
以证件照为例,图片中有大部分为背景,先用kmeans对图像进行分割,可以得到背景的标签,然后将图像分为前景和背景两部分,非背景的都当作前景,显示kmeans分割后的图像dst,将原图像前景赋给dst,背景都设为0,得到kmeans分割后的图像如下,可看到边缘处有一些小蓝边,过渡比较粗超:所以设置遮罩层对边缘进行融合,新建掩码mask单通道图像,将前景部分置1,背景部分置0,然后对mask进行腐蚀和高斯模糊,则mask前景部分为1,背景部分为0,边缘部分非0和1。新建结果图像result,对于ma..原创 2020-07-29 10:11:57 · 1143 阅读 · 0 评论 -
绿幕背景视频抠图
绿幕背景视频抠图对实时性要求比较高,如果使用kmeans或者GMM的话那么就太耗时了,达不到要求,因此将RGB空间转换到HSV色彩空间进行处理 关于HSV 中颜色分量范围请看这篇博客:http://blog.youkuaiyun.com/linqianbi/article/details/78975998绿幕背景视频抠图的流程图:下面看代码: #include<opencv2\opencv.hpp> using namespace cv;...原创 2020-07-29 10:11:25 · 904 阅读 · 0 评论 -
OpenCV之图像分割(五) 证件照背景替换
算法设计步骤:代码与注释: /* 流程处理思路: 先通过Kmeans训练,目的为了得到背景像素的一个标记(个人觉得没有这个必要,性价比太低了) 利用这个标记跟证件照的原图进行一波处理,得到背景跟前景的一个(0跟255)的分开,架构这个作为mask 对这个马mask进行一波骚操作,目的是为了后面的羽化边缘,得到更加精确的效果, 羽化边缘有几种思路:先讲下这种的,即 利用3X3的内核去掉一个边界像素,再利用高斯模糊得到梯度边缘,.原创 2020-07-28 20:45:17 · 905 阅读 · 0 评论 -
OpenCV实现彩色图像轮廓 换背景颜色
1 #include <opencv2/opencv.hpp> 2 using namespace cv; 3 int main() 4 { 5 Mat g_srcImage = imread("11.jpg"); 6 imshow("g_srcImage", g_srcImage); 7 waitKey(0); 8 9 vector<Mat> g_vChannels;10 split(g_srcImage, g_v...原创 2020-07-28 20:44:44 · 1599 阅读 · 0 评论 -
opencv笔记二十八(模板匹配(matchTemplate,较为低级必须是原图扣出来的一部分,且长宽都不能变才行,原理类似于卷积))
直观原理来自:https://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html它是怎么实现的? 我们需要2幅图像: 原图像 (I):在这幅图像里,我们希望找到一块和模板匹配的区域 模板 (T):将和原图像比照的图像块 我们的目标是检测最匹配的区域: 为了确定匹配区域, 我们不得不滑动模板图像和原图像进行比较: 通过...原创 2020-07-27 10:54:27 · 974 阅读 · 0 评论 -
图像滤镜--图象扭曲算法
图象扭曲是平面图形变化的一种,它可用于许多场合,如在以前介绍的火焰特效中加入扭曲效果,会使火焰更逼真(当然代码要有更高的的效率才行),如果在字幕当中加入扭曲效果,会给人一种怪异的感觉。 图象扭曲的算法并不复杂,但要解释清楚却不是一件容易的事,为了说明问题只好借用图片了,网路慢的朋友多多包涵了。算法例程源码编译需VC++、DXSDK、DXGuide。 图一 图二 图三 首先我们来看图一,大家可看出在图中有一些网格线,这里假定这些网格线是...原创 2020-07-25 10:59:43 · 868 阅读 · 0 评论 -
Delaunay Triangulation and Voronoi Diagram using OpenCV ( C++ / Python )
Delaunay Triangulation and Voronoi Diagram using OpenCV ( C++ / Python )Satya MallickNOVEMBER 5, 201555 COMMENTSFigure 1. Left : Image of President Obama with landmarks detected using dlib. Center : Delaunay triangulation of the landmarks. Right :.原创 2020-07-24 13:55:36 · 678 阅读 · 0 评论 -
贝塞尔曲线原理(简单阐述)
原理和简单推导(以三阶为例):设P0、P02、P2是一条抛物线上顺序三个不同的点。过P0和P2点的两切线交于P1点,在P02点的切线交P0P1和P2P1于P01和P11,则如下比例成立:这是所谓抛物线的三切线定理。当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有:t从0变到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得:当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezie..原创 2020-07-24 13:54:39 · 535 阅读 · 0 评论 -
图像特征提取(形状特征,空间关系特征)
一 、形状特征(一)特点各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③许多形状特征仅描述了目标局部的性质,要全面描述目标常对计算时间和存储量有较高的要求;④许多形状特征所反映的目标形状信息与人的直观感觉不完全一致,或者说,特征空间的相似性与人视觉系统感受到的相似性有差别。另外,从2-D图像中表现的3-D物体实际上只是物体在空间某一平面的投影,从2-原创 2020-07-24 13:53:33 · 4270 阅读 · 0 评论 -
学习OpenCV:滤镜系列(2)——扩张&挤压
原理:凸透镜效果算法[cpp]view plaincopy#include<math.h> #include<opencv/cv.h> #include<opencv/highgui.h> usingnamespacecv; usingnamespacestd; intmain() { Matsrc=imread("D:/img/face02.jpg",1); ...原创 2020-07-24 13:53:00 · 411 阅读 · 0 评论 -
Opencv-python滤镜系列(3): 凹透镜滤镜效果实现
本文参考博客:https://blog.youkuaiyun.com/yangtrees/article/details/9095731效果:顾名思义,凹透镜滤镜效果跟凸透镜效果相反,是将图像挤压到某一个中心点。原理是将原图中的像素值,坐标转换后的位置映射到新的图像中,得到一个凹透镜的滤镜效果。首先,确定一个中心点,这里选择的是原图图像中心点:Point center(width / 2, heigh / 2);1然后,根据图像位置和中心点的位置关系,确定一个转换角度:double原创 2020-07-24 13:52:31 · 981 阅读 · 1 评论 -
learnOpenCv】Facial Landmark Detection:人脸特征点检测的一些应用
目前在计算机视觉领域,人脸方向的研究非常之多。人脸分析最常见的应用是人脸识别,但是如果我们想要验证图像中一个人的身份,需要先知道这个图像中人脸的位置。因此,人脸检测(在图像中定位人脸,并返回一个包含人脸的矩形或圆形框)是一个非常热门的领域。2001年,Paul Viola and Michael Jones在他们开创性的论文““Rapid Object Detection using a Boosted Cascade of Simple Features”来解决这个问题。在OpenCV的早期甚至是现在..原创 2020-07-23 10:26:08 · 1410 阅读 · 0 评论 -
OpenCV肤色检测
前三种方式转载:http://blog.youkuaiyun.com/onezeros/article/details/6342567第一种:RGB color space第二种:RG color space第三种:Ycrcb之cr分量+otsu阈值化第四种:YCrCb中133<=Cr<=173 77<=Cb<=127第五种:HSV中 7<H<29下一步需要滤波操作 因为检测结果中有许多瑕疵[cpp]view plaincopy#includ...原创 2020-07-22 10:16:21 · 548 阅读 · 0 评论 -
Opencv暑期历程--Day10(6种肤色检测方法,YCrCb肤色模型解释,再理解一遍掩模)
从一篇文章了解到,肤色检测主要有以下七种方法:RGB color space Ycrcb之cr分量+otsu阈值化 YCrCb中133<=Cr<=173 77<=Cb<=127 HSV中 7<H<20 28<S<256 50<V<256 基于椭圆皮肤模型的皮肤检测 opencv自带肤色检测类AdaptiveSkinDetector不过经作者自己检验,用RGB的方法受光线影响比较大,鲁棒性太低了,所以我们这次就不实验它了,留下一个判别原创 2020-07-22 10:15:15 · 2378 阅读 · 1 评论 -
Opencv暑期历程--Day10(6种肤色检测方法,YCrCb肤色模型解释,再理解一遍掩模)
从一篇文章了解到,肤色检测主要有以下七种方法:RGB color space Ycrcb之cr分量+otsu阈值化 YCrCb中133<=Cr<=173 77<=Cb<=127 HSV中 7<H<20 28<S<256 50<V<256 基于椭圆皮肤模型的皮肤检测 opencv自带肤色检测类AdaptiveSkinDetector不过经作者自己检验,用RGB的方法受光线影响比较大,鲁棒性太低了,所以我们这次就不实验它了,留下一个判别原创 2020-07-22 10:14:42 · 2060 阅读 · 0 评论