C# OpenCv 证件照换底色
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OPenCVDemo
{
class Program
{
static void Main(string[] args)
{
//读取照片
Mat img = Cv2.ImRead("2.png");
Cv2.ImShow("原图.png", img);
//图像缩放
//Mat mg = new Mat();
//Cv2.Resize(img, mg, new Size(200,200), 0.5, 0.5);
//Cv2.ImShow("mg.png", mg);
//图片转换为灰度图
Mat hsv = new Mat();
Cv2.CvtColor(img, hsv, ColorConversionCodes.BGR2HSV);
Cv2.ImShow("hsv.png", hsv);
//var channels = Cv2.Split(hsv);
//Cv2.ImShow("B", channels[0]);
//Cv2.ImShow("G", channels[1]);
//Cv2.ImShow("R", channels[2]);
//图片的二值化处理
Mat mask = new Mat();
Scalar lower_blue = new Scalar(90, 70, 70);
Scalar upper_blue = new Scalar(110, 255, 255);
Cv2.InRange(hsv, lower_blue, upper_blue, mask);
Cv2.ImShow("mask.png", mask);
//腐蚀膨胀
Mat erode = new Mat();
Cv2.Erode(mask, erode, 1);
Mat dilate = new Mat();
Cv2.Erode(erode, dilate, 1);
Cv2.ImShow("dilate.png", dilate);
for (int r = 0; r < img.Rows; r++)
{
for (int c = 0; c < img.Cols; c++)
{
if (dilate.At<byte>(r, c) == 255)
{
Vec3b vec3B = dilate.At<Vec3b>(r, c);
//此处替换颜色,为BGR通道,不是RGB通道
vec3B.Item0 = 255;
vec3B.Item1 = 255;
vec3B.Item2 = 255;
img.Set<Vec3b>(r, c, vec3B);
}
}
}
Cv2.ImShow("白底.png", img);
//窗口等待的命令,0表示无限等待
Cv2.WaitKey(0);
}
}
}

C# OpenCv 证件照换底色的更多相关文章
- 教你用OpenCV 和 Python给证件照换底色(蓝底 <->红底->白底)
在我们的生活中常常要用到各种底色要求的证件电子照,红底.蓝底.或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色. P ...
- c#实现超实用的<证件照换底色>小工具
1前言 我们在工作和生活中经常要填写一些个人资料,这时候往往需要放证件照上去,但是有时候人家要求是红底或白底,但是偏偏不巧的是你以前照了张蓝底的.这时候你想换个底色,于是在百度上一搜“证件照换 ...
- 20行代码教你用python给证件照换底色
1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流.本文只是为了告诉大家:python其实有很多黑科技(牛逼的库),我们既可以用python处理工作中的一些事儿,同时我们也 ...
- opencv —— floodFill 漫水填充法 实现证件照换背景
漫水填充:floodFill 函数 简单来说,漫水填充就是自动选中与种子像素相连的区域,利用指定颜色进行区域颜色填充.Windows 画图工具中的油漆桶功能和 Photoshop 的魔法棒选择工具,都 ...
- opencv::证件照背景替换
证件照背景替换 K-Means 背景融合 – 高斯模糊 遮罩层生成 #include <opencv2/opencv.hpp> #include <iostream> usin ...
- PS证件照换背景
综述 博主原创内容. 在PS里,对于抠图,比较有技术含量的便是抠头发丝了,下面为大家带来一个比较详细的抠头发丝的教程. 素材准备 在这里我们用这张图片作为抠图素材,下面让我们一步步来演示抠图的过程,并 ...
- Python给照片换底色(蓝底换红底)
环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN10 64位,安装的函数库是 numpy-1.13.1+mkl-cp36-cp36m-w ...
- PS 证件照换颜色
1.打开要修改的图片,然后先Ctrl+J备份一份 2.点击魔法棒,点击要换颜色的地方,如衣服,之后会出现虚线,如果自动选择的不全,可以按住Shift键自行选择区域 3.然后Shift+Fn+F5(由于 ...
- (生活)Photoshop入门(不定时更新)
我可能是想找个工作以外的事情做一下. 目标:我要自学网PhotoShop商业修图. 笔记: .图层 .1总结: 1.1.1图层就好像画画的一张纸,但是每一层又互不影响. 1.1.2图层蒙版(覆盖一层玻 ...
- Opencv博文收藏列表
opencv识别二维码:https://blog.csdn.net/jia20003/article/details/77348170 opencv视频:http://www.opencv.org.c ...
随机推荐
- 超简单JSP人员信息管理系统(适合新手练手用)
自己以前闲着没事写的JSP小项目,适合刚学完JSP拿来练手的朋友. 源码地址: https://github.com/mudfish/userManager 项目说明: 软件需求: 开发工具:ecli ...
- 编译静态库遇到的 LNK2019 报错
前文提到了 CMake 学习 文末基本涵盖了我遇到的编译问题,但是在得到一个编译好的 .lib 文件后,还需要放到项目中引用成功后才算真正的完成静态库的编译 嗯,我之所以说这些是因为我在项目中链接静态 ...
- win32 - ListView_GetItemPosition的使用
ListView_GetItemPosition : Gets the position of a list-view item 理论上获得桌面图标的正确方法是使用shell项,=> IFold ...
- django学习第十天---ajax请求和JsonResponse
AJAX 它是js的功能,特点:异步请求,局部刷新 简单请求示例 基于jquery的ajax请求 异步请求,不会刷新页面,页面上用户之前输入的数据都不会丢失 <p>下面是ajax请求< ...
- Swift高级进阶-Swift编译过程,”SIL代码“,“IR语法”
swift编译过程 如果不懂LLVM,Clang的同学可以去了解下它的知识点 一些文章中有详细介绍 OC 的编译过程 ,本文来探索一下 Swift 的编译过程.Swift 的编译过程中使用 Swif ...
- 【Azure 媒体服务】Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢?
问题描述 Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢? 问题解答 Azure Med ...
- 【Azure Developer】Go语言调用Azure SDK如何登录到中国区Azure环境
问题描述 在 "使用 Azure SDK for Go 进行 Azure 身份验证" 文章中的 Go 示例代码进行登录Azure时,默认指向的是Globa Azure.当只修改AA ...
- 【Azure Redis 缓存】Azure Reids是否可以开启慢日志(slowlog)和执行config指令
问题描述 使用Azure Redis,是否可以开启慢日志来查看最近时间中执行比较耗时的指令呢? 同时,如何执行Redis的Config只能来修改配置呢? 根本原因 一:Azure Reids通过Red ...
- ElasticSearch基础介绍(1)
## 1. Elasticsearch基本介绍 官网:https://www.elastic.co/cn Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引 ...
- C++ //常用算法 binary_serach //查找指定的元素 //无序序列中不可用
1 //常用算法 binary_serach 2 //查找指定的元素 3 //无序序列中不可用 4 5 6 #include<iostream> 7 #include<algorit ...