学习
实践
活动
专区
工具
TVP
写文章

OpenCV这么简单为啥不学——1.11、蓝背景证件照替换白色或红色

故而我们选择学习OpenCV,我们来一步步的学习OpenCV。 接下来,你可以使用膨胀和腐蚀操作来填充蓝色区域。最后,使用cv2.imwrite函数保存新的证件照图片即可。 cv2.imwrite('red.jpg', img) cv2.imshow('red', img) cv2.waitKey(0) cv2.destroyAllWindows() 总结 我这里替换的都是纯色 ,当我们的照片不是纯色的时候就需要先进行抠图处理,这里还是需要复杂的AI计算的,我这里只是片面的进行了颜色色值的替换,只能当做教学用例啊。 它是一种颜色的属性,我们为其命名,例如“红色”或“blue”。 “Value”是“光度”的另一个词,该颜色的属性使它似乎相当于黑白之间的一些灰色阴影。

25040

OpenCV-泛洪填充

泛洪填充简单理解就是将指定颜色从指定位置开始填充一个连通区域,此时的连通性由像素值的接近程度来衡量。OpenCV中提供两种泛洪填充方式: 填充彩色图像填充掩码图像。 下面先来看看在OpenCV中泛洪填充的函数。 01 OpenCV中泛洪填充函数 OpenCV提供了floodFill函数进行泛洪填充,函数的完整定义: floodFill(image, mask, seedPoint, newVal, loDiff 而且必须要比原始图像的宽高上加两个像素,这是OpenCV强制的,如果不这样指定会抛出异常; cv.FLOODFILL_FIXED_RANGE,这也是使用填充图片的方式参数,也就是设定起始点,通过设置像素区间来进行填充 此时为了效果明显使用纯色进行试验,因为此时填充没有了像素范围,也就是当设置cv.FLOODFILL_MASK_ONLY的时候,原始图片起始点周边只能是完全相同的像素值才能被填充。 ?

94100
  • 广告
    关闭

    有奖征文丨玩转 Cloud Studio

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    四、了解色彩空间及其详解

    一、学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 二、了解OpenCV中常见的色彩空间 2.1 什么是色彩空间 色彩空间又可以叫做色域,英文是Color Sapce,是一种人为建立,用于表示色彩的一种 了解色彩空间对我们今后使用opencv进行图像处理很重要,在今后对图像处理时将会涉及到色彩空间的内容,所以学习了解色彩空间是有必要的。 2.3 HSV颜色空间 HSV颜色空间是一种表示色调、饱和度以及亮度的颜色空间,其中H(hue)指的是色调,就是平常一些颜色,黄色、绿色、红色等;S(saturation)指的是饱和度、V(value HSV是一种更接近于人类感知的一种颜色空间,它是根据人对色彩的观察从而产生的。 其中H色调是描述纯色,S饱和度是与白光叠加后的描述。 以下是HSV的色彩空间图,图片来源于网络。 ? 2.5 opencv 色彩空间的相互转换 在opencv中,提供了图像对于不同色彩空间的转换方法,我们可以通过这些方法对图像进行不同色彩空间的转化。首先我们需要读取一张图片。

    77010

    实战 | OpenCV绘制斜矩形并截取区域ROI保存(附代码)

    导读 本文主要介绍如何用OpenCV绘制斜矩形并将绘制区域ROI截取保存。 背景介绍 在图像处理中正矩形ROI方便绘制和截取,使用广泛。 在OpenCV中我们可以使用RotateRect类和不规则ROI提取方法来实现。 实现步骤与演示 测试图像如下,假定我们要截取下面的IC器件: 【1】给定RotateRect的中心坐标、角度、大小,然后获取旋转矩形端点坐标,通过画线的方法绘制即可。 fillPoly(imgCopy, pts, npt, 1, Scalar(0, 0, 255), 8); //画填充多边形 imshow("mask", mask); imshow("fillRect , 1, Scalar::all(255), 8); //画填充多边形 【4】使用图像按位与操作bitwise_and提取不规则ROI: Mat result; bitwise_and(src, src

    2.6K40

    目标检测:选择性搜索策略(C++ Python)

    文末也会给出使用C++或者Python的Opencv代码。 目标检测 vs 目标识别   目标识别解决了是什么的问题,目标检测解决了在哪里的问题。   所有目标检测算法的核心是一种目标识别算法。 图像是三维物体的二维投影,对象特征,纵横比和形状根据所拍摄图像的角度而显著变化。滑动窗口的方法因为需要搜索多个纵横比,因此变得非常昂贵。 这减少了我们必须分类的图像块的数量。这些生成的区域建议具有不同的尺度和长宽比。   目前提出了几种区域建议方法,    1. Objectness    2. 选择性搜索是一种用于目标检测的区域推荐算法。它的设计速度快,召回率高。它是根据颜色、纹理、大小和形状的兼容性,计算相似区域的层次分组。    选择性搜索开始了基于利用图由Felzenszwalb和Huttenlocher分割方法的像素的图像分割。该算法的输出如下所示。右边的图像包含用纯色表示的分段区域。 ?

    2.1K70

    OpenCV 教程 03: 如何跟踪视频中的某一对象

    RGB 就是三原色光模式,又称 RGB 颜色模型或红绿蓝颜色模型,是一种加色模型,将红、绿、蓝三原色的色光以不同的比例相加,以合成产生各种色彩光。 OpenCV 中的顺序是 BGR。 灰度图。简单的理解,就是黑白图,图像的每个 像素点 只能有 一个值 表示颜色,像素值范围是 [0~255],现有的成熟分析算法多是基于灰度图像。 HSV。 这个模型中颜色的参数分别是色调(H)、饱和度(S)和明度(V).HSV对用户来说是一种直观的颜色模型。 我们可以从一种纯色彩开始,即指定色调H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。 以上三个模型,使用 HSV 定义一个目标对象更为方便。 步骤: 拍摄视频的每一帧 从 BGR 转换为 HSV 颜色空间 我们将 HSV 图像阈值设置为蓝色范围 单独提取蓝色对象,可以在该图像上做任何我们想做的事情。

    15510

    抠图技术初探

    图像抠图英文名叫 image matting,顾名思义就是将目标图像从背景中分离出来的一种图像处理技术。根据图像背景的复杂程度,一般分为纯色背景抠图(“绿幕”或者“蓝幕”)和自然图像抠图。 下面的代码就用opencv实现了一个最简单的绿幕抠图:     mat src = imread("d:\\samplepic\\g1.png");         mat hsvsrc; 自然图像抠图 绿幕抠图对图像背景有苛刻的要求,现实中蓝绿纯色背景的图片太少,更多的是平时用手机或者相机拍摄的复杂背景的图片,这时候要想分离前景,就需要用到自然图像抠图技术。 自然图像抠图基本都基于这样一种模型: c = αf + (1-α)b 这个模型把原始的图像看成了由前景和背景叠加合成所组成的图,其中: c 为图像当前可观察到的颜色,是已知的 f 是前景色, 当然也可以看到没有一种算法是在所有的评测图片中都表现最好,从这里也可以看到自然图像抠图的复杂性。 ?

    2.9K110

    NLP大火的prompt能用到其他领域吗?清华孙茂松组的 CPT 了解一下

    有了 CPT,VL-PTM 可以直接通过用目标图像区域的彩色文本填充 masked token 来定位查询文本,目标图像区域的 objective form 与预训练相同。 受此启发,研究者通过一组颜色 C 来关联图像区域和文本表达,其中每种颜色 是由它的视觉外观 ( RGB (255, 0, 0))和颜色文本 (:red)来定义的。 在实验中,研究者发现,用实心块给目标着色比用边界框效果更好,因为纯色目标在现实世界的图像中更为常见(红色 T 恤、蓝色车)。 具体来说,此处用一个如下所示的模板 T (·) 将查询文本 q(「the horse watched by the woman」)转换为填空查询: 如此一来,VL-PTM 会被提示决定哪个区域的颜色更适合填充掩码 这是因为适合物体轮廓的纯色在现实世界的图像中更常见,这使得 CPT-Seg 成为更自然的视觉 sub-prompt(尽管需要更强的注释来训练分割工具)。 3.

    33030

    【从零学习OpenCV 4】图像仿射变换

    介绍完图像的缩放和翻转后,接下来将要介绍图像的旋转,但是在OpenCV 4中并没有专门用于图像旋转的函数,而是通过图像的仿射变换实现图像的旋转。 表3-5 边界填充方法和对应标志 标志参数 简记 作用 BORDER_CONSTANT 0 用特定值填充iiiiii|abcdefgh|iiiiiii BORDER_REPLICATE 1 两端复制填充aaaaaa|abcdefgh|hhhhhhh BORDER_REFLECT 2 倒叙填充fedcba|abcdefgh|hgfedcb BORDER_WRAP 3 正序填充cdefgh|abcdefgh |abcdefg BORDER_REFLECT_101 4 不包含边界值倒叙填充gfedcb|abcdefgh|gfedcba BORDER_TRANSPARENT 5 随机填充,uvwxyz|abcdefgh 代码清单3-34 myWarpAffine.cpp图像旋转与仿射变换 1. #include <opencv2\opencv.hpp> 2. #include <iostream> 3.

    63340

    canvas绘制图像轮廓效果绘制边框绘制轮廓 使用算法(marching-squares-algorithm)总结参考文档

    考虑到在三维webgl中,计算轮廓的算法思路是这样的: 先绘制三维模型自身,并在绘制的时候启动模板测试,把三维图像保存到模板缓冲中。 然后开启globalCompositeOperation = 'source-in', 并用纯色填充整个canvas区域,由于source-in的效果,纯色填充放大图片有像素的区域。 ; 其中p代表图片本身的绘制位置,s代表向左,向上的偏移量,同时图片的宽和高都增加 2 * s 用纯色填充放大图片的区域 在上一步绘制的基础上,开启globalCompositeOperation = 'source-in', 并用纯色填充整个canvas区域。 总结 对于没有中空效果的图片,我们一般不采用MarchingSquares算法,而采用前面的一种方式来实现,效率高,而且效果相对更好。

    1.4K30

    【深度学习系列】用PaddlePaddle进行人脸识别

    上个案例中我们讲了如何用PaddlePaddle进行车牌识别的方法,这次的案例中会讲到如何用PaddlePaddl进行人脸识别,在图像识别领域,人脸识别也属于比较常见且成熟的方向了,目前也有很多商业化的工具进行人脸识别 由于图像中存在很多干扰因素,外部因素:清晰度、天气、角度、距离等;目标本身因素:胖瘦,假发、围巾、银镜、表情等。所以神经网络一般需要比较多的训练数据,才能从原始的特征中提炼出有意义的特征。 特征提取:就是将人脸图像信息数字化,把人脸图像转换为一串数字。 人脸特征:找到人脸的一些关键特征或位置,眼镜、嘴唇、鼻子、下巴等的位置,利用特征点间的欧氏距离、曲率和角度等提取特征分量,最终把相关的特征连接成一个长的特征向量。 来识别人脸,在实际使用过程中,dlib的识别效果比opencv的好,但opencv识别的速度会快很多,获取10000张人脸照片的情况下,dlib大约花费了1小时,而opencv的花费时间大概只有20分钟

    1.7K80

    C++ OpenCV图像分割之分水岭分割

    分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征 markers: 在执行分水岭函数watershed之前,必须对第二个参数markers进行处理,它应该包含不同区域的轮廓,每个轮廓有一个自己唯一的编号,轮廓的定位可以通过Opencv中findContours ---- 上面的API函数非常简单,但是参数里面第二个说了在需要进行轮廓的提取,所以说在做分水岭操作之前,我们要结合以前学过的知识对图像进行先一步的处理 均值滤波----变成灰度图---二值化-- -形态学操作---查找轮廓等 代码演示 我们再新建一个项目名为opencv--Matting,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法. ? 8.生成随机颜色,并填充颜色,在新的图像中画出来后看一下分割的效果 ? ? 9.显示最后填充的图片并打印出一共多少个 ? ---- 我们来看一下运行效果 ?

    1.9K10

    独家|OpenCV 1.3 矩阵的掩膜操作(附链接)

    测试案例 来看一下如何增强图像对比度的示例,按照以下公式重新计算图像各个像素: 第一种是利用公式做计算,而第二种是第一种使用mask来计算的简化版本。 对于较大的图像来说,操作也是相同,后者的表述更容易被理解。 代码 可以到这里下载源代码,或者到以下目录中查看OpenCV的源代码示例库。 cv::CV_Assert函数 https://docs.opencv.org/4.5.2/db/de0/group__core__utils.html 创建一个与输入图像尺寸和数据类型均相同的输出图像图像的边界上,会有不存在的像素位置((-1)—(-1)),在这种情况下,公式未作出明确的定义,最为简单的解决方案是不对这些点使用内核,边界的像素值设置为0: filter2D函数 在图像处理过程中 编辑:于腾凯 校对:王欣 下一小节:1.4 对图像的操作 往期回顾: 独家|OpenCV 1.1 Mat - 基本图像容器(附链接) 独家|OpenCV 1.2 如何用OpenCV扫描图像、查找表和测量时间

    11230

    【从零学习OpenCV 4】Sobel算子

    使用Sobel边缘检测算子提取图像边缘的过程大致可以分为以下三个步骤: Step1:提取X方向的边缘, X 方向一阶Sobel边缘检测算子(5.16)所示。 Step2:提取Y方向的边缘, Y 方向一阶Sobel边缘检测算子(5.17)所示。 Step3:综合两个方向的边缘信息得到整幅图像的边缘。 由两个方向的边缘得到整体的边缘有两种计算方式:第一种是求取两张图像对应像素的像素值的绝对值之和;第二种是求取两张图像对应像素的像素值的平方和的二次方根。这两种计算方式在式(5.18)给出。 ? 最后三个参数为图像放缩因子、偏移量和图像外推填充方法的标志,多数情况下并不需要设置,只需要采用默认参数即可。 代码清单5-25 mySobel.cpp图像Sobel边缘提取 1. #include <opencv2\opencv.hpp> 2.

    74320

    OpenCV | 基于Android系统详析Mat与Bitmap对象(创建、初始化、使用与转换 | 附大量demo)

    代码中的.jpg)。 基础形状绘制与填充 使用OpenCV做对象检测、对象识别程序开发,很多场景下,需要在输出图像上对处理结果加上醒目的轮廓或者以边框矩形绘制或者颜色填充,这个就需要学会图形绘制相关API的使用。 ---- 3.0 首先是OpenCV是在Mat图像上绘制与填充 OpenCV2.xAndroid SDK图形绘制是在Core模块中, 到了OpenCV3.x中,图形绘制就已经移到Imgproc这个模块中了 ---- 另外补充: OpenCV会根据thickness的值来决定是进行填充还是只做描边绘制; 在上述矩形、圆、椭圆的绘制方法中,如果想要把绘制方式改为填充,只需要设置参数thickness=-1即可 中表示图像的内存容器; ---- 4.1 Mat与Bitmap相互转换 第一种情况: 通过图像对象通道,即OpenCV的imread()读取得到Mat对象; 或者通过Mat类初始化创建的Mat对象; 将这样的

    4.4K63

    OpenCV 图像处理:常用绘图函数

    本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。 文章目录 opencv中的绘图函数 1.线段绘制 2.矩形绘制 3.圆,椭圆绘制 圆绘制 椭圆绘制 4.多边形绘制 5.添加文字 6.综合图像绘制 opencv中的绘图函数 1.线段绘制 cv2.line ( img, pts, color thickness,linetype) 参数说明 img :待绘制图像 color :形状的颜色,元组 (255,0,0) pts :起点和终点坐标 thickness pts:左上角和右下角坐标点 color:形状的颜色,元组 255,0,0 thickness:线条的粗细。 -1 为填充,默认值是 1 。 linetype:线条的类型,使用默认值即可。

    21020

    OpenCV实现照片自动红眼去除

    而做图像处理开发者可以借助OpenCV提供API功能轻松实现自动红眼去除修复。首先看一下效果吧图像 有红眼照片 ? 修复之后的照片 ? 实现步骤 眼睛检测 基于OpenCV自带的HAAR眼睛级联分类器特征数据(haarcascade_eye.xml),通过调用级联分类器实现眼睛检测,对检测到的眼睛用红色矩形框标注,第一张图所示。 最终对两个眼睛提取区域图像如下: ? 150) & (bgr[2] > (bgr[1] + bgr[0]));} 逻辑操作与形态学处理 上述的白色区域就是红色眼球所在的区域,但是这样的情况下白色区域内部还有一些黑色小块,我们可以通过漫水填充与逻辑操作完整填充整个内部区域 图像处理的基本操作能力、以及像素操作ROI区域与MASK的巧妙运用。

    81560

    扫码关注腾讯云开发者

    领取腾讯云代金券