掩模Mask_一幅图进行抠图
来源:互联网 发布:阿里云机顶盒破解 编辑:程序博客网 时间:2024/05/22 15:38
源http://www.cnblogs.com/skyfsm/p/6894685.html
对一幅图进行抠图操作
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main()
{
Mat image, mask;
Rect r1(100, 100, 250, 300);
Mat img1, img2, img3, img4;
image = imread("1.jpg");
mask = Mat::zeros(image.size(), CV_8UC1);//第一步
mask(r1).setTo(255);//r1是设置好的感兴趣区域 第二步
/*
第一步建立与原图一样大小的mask图像,并将所有像素初始化为0,因此全图成了一张全黑色图。
第二步将mask图中的r1区域的所有像素值设置为255,也就是整个r1区域变成了白色。
得到mask图像
*/
image.copyTo(img2, mask);//原始图image拷贝到目的图img2
/*
其实拷贝的动作完整版本是这样的:
原图(image)与掩膜(mask)进行与运算后得到了结果图(img2)。
何为图与掩膜的与运算?
其实就是原图中的每个像素和掩膜中的每个对应像素进行与运算。
比如1 & 1 = 1;1 & 0 = 0;
比如一个3 * 3的图像与3 * 3的掩膜进行运算,得到的结果图像就是image2图像
mask就是位图啊,来选择哪个像素允许拷贝,哪个像素不允许拷贝。
如果mask像素的值是非0的,我就拷贝它,否则不拷贝。
因为我们上面得到的mask中,感兴趣的区域是白色的,表明感兴趣区域的像素都是非0,
而非感兴趣区域都是黑色,表明那些区域的像素都是0。一旦原图与mask图进行与运算后,
得到的结果图只留下原始图感兴趣区域的图像了。
*/
image.copyTo(img3);
img3.setTo(0, mask);
/*
首先将原始图image拷贝一份给img3,
然后img3将mask白色区域设置为0(黑色),
好比如果mask中像素非0的,我就把我图像对应的那个点的像素值设置为0,
否则啥也不做。伪代码是if mask(i,j)>0 then img3(i,j)=0。
*/
img1 = image(r1);
imshow("源图像", image);//""里是窗口名 原始图
imshow("mask_Roi内白外黑", mask);//黑白图
imshow("Roi外是黑色", img2);//image2和3是效果图
imshow("Roi是黑色", img3);//
imshow("抠图结果", img1);
waitKey();
return 0;
}
阅读全文
0 0
- 掩模Mask_一幅图进行抠图
- unity OpenCV生成mask 进行抠图
- ps中用钢笔进行抠图
- 通国轮廓进行抠图 掩膜
- 进行
- 怎样在EDIUS中进行快速抠图
- Photoshop抠图(运用背景橡皮擦工具进行抠图)
- 利用橡皮擦进行PS抠图的方法教程
- 如何进行水文分析图
- 使用Matplotlib进行图分析
- Photoshop 使用钢笔工具 进行抠图 商业出图入门
- 通过.txt/.excel提供的数据对完整图像进行局部抠图
- 用实体关系图进行数据库建模
- 用实体关系图进行数据库建模
- 用实体关系图进行数据库建模
- 用实体关系图进行数据库建模
- 用实体关系图进行数据库建模
- 用实体关系图进行建模
- 区分代码与数据
- 第一个博客,咔咔咔!
- CentOS7联网
- java 乏型
- 文章标题
- 掩模Mask_一幅图进行抠图
- POJ 2991 Crane 笔记
- HDU 6200 边双联通分量 + 并查集 + dfs序 + BIT
- A.Quasi-palindrome
- Android Studio 3.0.0 初试
- 关于使用python ~取反操作
- Apache Geode 快速入门(15分钟
- 如何判断两条链表是否相交
- 网络自动断开和连接