文档章节

OpenCv 016---图像ROI与ROI操作

o
 osc_wws45aot
发布于 2019/08/21 22:10
字数 332
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1 前备知识

null

2 所用到的主要OpenCv API

skip

3 程序代码

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    Mat src = imread("G:\\CVworkstudy\\program_wwx\\Research society140\\ZhaiZhigang140\\colormap.png");
    namedWindow("input", WINDOW_AUTOSIZE);
    imshow("input", src);
    int h = src.rows;
    int w = src.cols;

    //get ROI
    int cy = h / 2;
    int cx = w / 2;
    Rect rect(cx - 100, cy - 100, 200, 200);
    Mat roi = src(rect);
    imshow("roi", roi);

    Mat image = roi.clone();
    // modify ROI
    roi.setTo(Scalar(255, 0, 0));
    imshow("result", src);
    
    //modif copy roi
    image.setTo(Scalar(255, 0, 0));
    imshow("result", src);
    imshow("copy roi", image);

    //example with ROI - generate mask
    Mat src2 = imread("G:\\CVworkstudy\\program_wwx\\Research society140\\ZhaiZhigang140\\zhengjianzhao.jpg");
    imshow("src2", src2);
    Mat hsv, mask;
    cvtColor(src2, hsv, COLOR_BGR2HSV);
    //That is, dst (I) is set to 255 (all 1 -bits) if src (I) is within the
    //specified 1D, 2D, 3D, ... box and 0 otherwise.
    inRange(hsv, Scalar(100, 43, 46), Scalar(124, 255, 255), mask);//within the wise set to 255,if not,set 0
    imshow("mask", mask);//get the mask exclusive person

    //extract person ROI
    Mat person;
    bitwise_not(mask, mask);
    Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
    morphologyEx(mask, mask, MORPH_CLOSE, kernel);
    bitwise_and(src2, src2, person, mask);
    imshow("person", person);

    //generate background
    Mat result = Mat::zeros(src2.size(), src2.type());
    result.setTo(Scalar(0, 0, 255));

    //combine background + person
    Mat dst;
    bitwise_not(mask, mask);
    bitwise_or(person, result, dst, mask);
    add(dst, person, dst);

    imshow("dst", dst);
    waitKey(0);
    return 0;
}

 

4 运行结果

后面几张图省略,主要是实现证件照背景颜色替换,由蓝色替换为红色,颜色HSV范围表参见:

OpenCv 009---色彩空间与色彩空间转换

5 扩展及注意事项

null

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
OpenCV-Python 图像上的算术运算 | 十一

目标 学习图像的几种算术运算,例如加法,减法,按位运算等。 您将学习以下功能:cv.add,cv.addWeighted等。 图像加法 您可以通过OpenCV函数或仅通过numpy操作添加两个图像。两个图像应具有...

人工智能遇见磐创
2019/12/04
9
0
OpenCV(C++版)入门

了解Opencv Opencv是一个开源的计算机视觉编程程序库,可在windows,Linux,Mac,Android,iOS上面运行。目前Opencv已经到了第3版,增加了许多功能,API也全部迁移到了C++,当然也有Python版...

有苦向瓜诉说
2018/12/06
0
0
opencv笔记(1)

OpenCV库分为多个模块:opencvcore模块包含库的核心功能,opencvimgproc模块包含主要的图像处理函数,opencv_highgui模块提供了读写图像和视频的函数以及一些用户交互函数。 读取图像: imag...

jointlab
2018/12/02
4
0
OpenCV3入门(四)图像的基础操作

1、访问图像像素 1)灰度图像 2)彩色图像 OpenCV中的颜色顺序是BGR而不是RGB。 访问图像的像素在OpenCV中就是访问Mat矩阵,常用的有三种方法。 at定位符访问 Mat数据结构,操作灰度图像像素...

osc_xii3c3qn
04/16
2
0
Python各种图像库的图像的基本读写方式

目前主流的图像库有几下几种: 1. OpenCV 2. PIL(Pillow) 3. matplotlib.image 4. skimage 5. scipy.misc 结论:以上图片库中当属OpenCV最为强大,成熟。 1.1 OpenCV 图像的读取与储存 impo...

osc_xucwolsl
2019/03/14
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Buffer的创建及使用源码分析——ByteBuffer为例

目录 Buffer概述 Buffer的创建 Buffer的使用 总结 参考资料 Buffer概述 注:全文以ByteBuffer类为例说明 在Java中提供了7种类型的Buffer,每一种类型的Buffer根据分配内存的方式不同又可以分为...

osc_zoa046qb
22分钟前
21
0
《 ZooKeeper : Wait-free coordination for Internet-scale systems 》论文研读

Zookeeper 研读 说明:本文为论文 《 ZooKeeper : Wait-free coordination for Internet-scale systems 》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。 论文地址:Zookeeper Paper...

osc_4isxawz4
23分钟前
19
0
利用__new__实现单例模式

26 利用__new__实现单例模式 python当中有很多方法都可以实现单例模式, 但利用__new__无疑是最推荐的方式. 代码如下: class Demo:is_instance = Nonedef __new__(cls, *args, **kwargs...

_Change_
24分钟前
11
0
如何白嫖微软Azure12个月及避坑指南

Azure是微软提供的一个云服务平台。是全球除了AWS外最大的云服务提供商。Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务。这里的Azure是Azure国际不是Azure中...

osc_dwuu5jqk
24分钟前
21
0
Mybatis源码初探——优雅精良的骨架

@ 目录 前言 精良的Mybatis骨架 宏观设计 基础支撑 日志 日志的加载 日志的使用 数据源 数据源的创建 池化技术原理 数据结构 获取连接 回收连接 缓存 缓存的实现 CacheKey 反射 总结 前言 My...

osc_r9wwwi0j
26分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部