【练习5.9】图像掩码、礼帽、cvCopy、图像融合、cvCvtColor

 

提纲
题目要求
程序代码
结果图片
要言妙道

 

 

 

  

 

题目要求:

 读入一副风景图,然后将其转化为灰度图像

a、对图像进行形态学“礼帽”操作,并显示结果

b、将结果图像转化为8位的掩码

c、复制灰度值到礼帽块中,显示结果→我的理解是,将第a问与b问的结果图片融合成一副图

 

程序代码:

 

 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。
 2 //
 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg
 4 
 5 
 6 #include "stdafx.h"
 7 #include <cv.h>
 8 #include <highgui.h>
 9 #include <iostream>
10 using namespace cv;
11 using namespace std;
12 
13 //函数声明-->--->-->--->-->--->-->--->//
14 
15 //<--<--<--<--<--<--<--<--<--函数声明//
16 
17 
18 int _tmain(int argc, _TCHAR* argv[])
19 {
20     const char * fileName1 = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第5章\\风景.jpg";
21     IplImage * src1 = cvLoadImage(fileName1, CV_LOAD_IMAGE_UNCHANGED);
22     assert(src1);
23       
24     cvNamedWindow("原始图像", 0);    
25     cvNamedWindow("题目_a", 0);
26     cvNamedWindow("题目_b", 0);
27     cvNamedWindow("题目_c", 0);
28 
29     IplImage * img_Gray = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
30     
31     //使用cvCvtColor和cvCopy这些函数前,都应该对参数进行验证再使用
32     if (src1->nChannels != 3)
33     {
34         cout << "加载的图像必须为彩色图片" << endl;
35         return 0;
36     }
37     
38     cvCvtColor(src1, img_Gray, CV_RGB2GRAY);
39 
40     cvShowImage("原始图像", img_Gray);
41      
42     //---------------------------a:开始--------------------------------//
43 
44 
45     IplImage * imgCopy = cvCloneImage(img_Gray);
46     cvZero(imgCopy);
47 
48     IplConvKernel * kernel = cvCreateStructuringElementEx(3, 3, 1, 1, CV_SHAPE_RECT);
49     cvMorphologyEx(img_Gray, imgCopy, NULL, kernel, CV_MOP_TOPHAT,6);
50 
51     cvShowImage("题目_a", imgCopy);
52 
53     //---------------------------a:结束--------------------------------//    
54 
55     //---------------------------b:开始--------------------------------//
56 
57 
58     IplImage * imgCopy_b = cvCloneImage(img_Gray);
59     cvZero(imgCopy_b);
60 
61     cvThreshold(imgCopy, imgCopy_b, 50, 255, CV_THRESH_BINARY);
62 
63     cvShowImage("题目_b", imgCopy_b);
64 
65     //---------------------------b:结束--------------------------------//    
66 
67     //---------------------------c:开始--------------------------------//
68 
69 
70     IplImage * imgCopy_c = cvCloneImage(imgCopy);
71     //cvZero(imgCopy_c);
72 
73     cvCopy(imgCopy_b, imgCopy_c, imgCopy_b);
74 
75     cvShowImage("题目_c", imgCopy_c);
76 
77     //---------------------------c:结束--------------------------------//    
78 
79     cvWaitKey(0);
80 
81     cvReleaseImage(&src1);
82     cvReleaseImage(&imgCopy);
83     cvReleaseImage(&imgCopy_b);
84     cvReleaseImage(&imgCopy_c);
85 
86     cvDestroyWindow("原始图像");     
87     cvDestroyWindow("题目_a");
88     cvDestroyWindow("题目_b");
89     cvDestroyWindow("题目_c");
90 
91     return 0;
92 }
93   

 

结果图片:

 

要言妙道:

 ①使用cvCvtColor、cvCopy等函数时,注意验证输入图片的有效性,不然会报错,例如:

1     //使用cvCvtColor和cvCopy这些函数前,都应该对参数进行验证再使用
2     if (src1->nChannels != 3)
3     {
4         cout << "加载的图像必须为彩色图片" << endl;
5         return 0;
6     }
7     
8     cvCvtColor(src1, img_Gray, CV_RGB2GRAY);

 

②制作掩码图像其实就是二值化图像,使用漫水填充法也可以得到掩码图像,而且其中有关于mask的参数图像的用法

③可以使用cvCopy进行图像融合,利用上第三个参数

④礼帽和黑帽:这些操作分别用于分离比邻近的点亮或暗的一些斑块。所以,可用于实现类似Cognex的CogBlobTool功能,OpenCV中有类似描述Blob的结果:CvConnectedComponent

 

转载于:https://www.cnblogs.com/tingshuixuan2012/p/4455632.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div超出不换行_文字超出显示点点点之ellipsis 设置

一般情况下一行文字在一定区域显示的话如果不限定高度&#xff0c;那么在内容超过的宽度的话就会换行显示&#xff0c;为了页面的美观&#xff0c;目前的通用做法就是在最后显示…&#xff0c;然后鼠标悬浮显示完整内容&#xff0c;具体设置如下:height: 40px; overflor: hidde…

Kali源库配置和拼音安装

2019独角兽企业重金招聘Python工程师标准>>> 版本&#xff1a;kali-linux-2016.1-i386 0、对kali进行系统更新或者软件安装&#xff0c;直接通过国内网络访问境外主网网络不稳定&#xff0c;不如改成国内资源站点。 1、修改以下文档 vim /etc/apt/sources.list 2、文…

java中审核订单流程图_Java 后端横扫阿里、滴滴、美团总结的面试经验!

这次面试的公司有一点点多&#xff0c;主要是因为毕业后前两份工作找的都很草率&#xff0c;这次换工作就想着&#xff0c;emm&#xff0c;毕业三年了&#xff0c;该找个工作好好沉淀几年了。先说下这次面试的结果吧&#xff1a;到 hr 面的&#xff1a;阿里、美团、滴滴、金山云…

产品铭牌要求_AMPULM:电力变压器铭牌有哪些主要技术参数,你都知道吗?

电力变压器电力变压器是供配电系统中关键的一个环节&#xff0c; 它起到电力系统中电压等级的变换&#xff0c;同时连接不同电压等级的电网&#xff0c;以利于电能的输送、分配和使用。认识变压器铭牌图片为一台电力变压器上的铭牌&#xff0c;从铭牌上可以看到变压器的哪些信息…

python 学习资源收集汇总

2019独角兽企业重金招聘Python工程师标准>>> Python是一种面向对象、直译式计算机程序设计语言。它的语法简捷和清晰&#xff0c;尽量使用无异义的英语单词&#xff0c;与其它大多数程序设计语言使用大括号不一样&#xff0c;它使用縮进来定义语句块。与Scheme、Rub…

一年月份大小月口诀_怎么看自己的日柱 公式 推算口诀 最简便计算方法

日柱指的是我们农历干支出生的那一天&#xff0c;通过日柱我们可以看出自己命运的轨迹和走向&#xff0c;从风水学上来讲日柱是八字算命中举足轻重的一部分&#xff0c;那么如何知道自己的日柱呢&#xff1f;通过本期的四柱预测&#xff0c;给大家介绍一种最简便的推算口诀和日…

delphi excel取批注所在的行列_35个Excel使用技巧

技巧1、单元格内强制换行在单元格中某个字符后按alt回车键&#xff0c;即可强制把光标换到下一行中。技巧2、锁定标题行选取第2行&#xff0c;视图 - 冻结窗格 - 冻结首行(或选取第2行 - 冻结窗格)冻结后再向下翻看时标题行始终显示在最上面。技巧3、打印标题行如果想在打印时每…

如何接收串口数据_UART IDLE 中断使用接收不定长串口数据

前言在串口通信应用中&#xff0c;我们常使用接受和发送中断&#xff0c;相信大家都不陌生。这里有个非常有用的中断可能被大家所忽略&#xff0c;即总线IDLE中断。当一帧数据传输结束之后&#xff0c;总线会维持高电平状态&#xff0c;此时&#xff0c;就可以触发MCU的IDLE中断…

MFC 进度条CProgressCtrl

2019独角兽企业重金招聘Python工程师标准>>> SetStep(1);//设置步长 SetRange32(0, total);//设置范围 SetPos(_cur);//设置当前 进度 StepIt();进步一次 转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/688392

css限制字体三行_讲道理,仅3行核心css代码的rate评分组件,我被自己秀到头皮发麻...

(给100素材网点亮★号&#xff0c;提升开发技能)像rate评分组件一般都用javascript写&#xff0c;所以这次将是一个全新的尝试&#xff0c;用css实现一个rate评分 ❗ 核心代码也就三行?01效果图02原理主要是借助radio单选框&#xff0c;梳理如下&#xff1a;去找个好看的iconf…

matlab GUI之自定义菜单小结

自定义菜单 1.uimenu对象 huimenu(PropertyName,ProperValue) huimenu(parent,PropertyName,ProperValue) 常见属性&#xff1a; 1.1标签 label uimenu(label,&Open) 1.2快捷键 Accelerator uimenu(Accelerator,E) 快捷键位 ctrlE 注意以下三个是系统保留的Accelerator…

把cpp编译为so_基于VSCode和CMake进行C/C++开发第三讲GCC编译器

3.0 本讲目录本系列视频&#xff0c;B站首发&#xff0c;up主: xiaobing1016前言&#xff1a;GCC 编译器支持编译 Go、Objective-C&#xff0c;Objective-C &#xff0c;Fortran&#xff0c;Ada&#xff0c;D 和 BRIG(HSAIL)等程序&#xff1b;Linux 开发C/C 一定要熟悉 GCCVS…

CSS快速入门-箭头和图标

一、三步搞懂箭头产生的原理 在前面的盒子模型一文中&#xff0c;我们已经知道了一个元素空间占位。为了弄明白箭头的产生&#xff0c;我们可以三步走&#xff1a; #demo12 {border: 100px solid;border-color:green blue orange red;width:100px;height:100px;}<div id&quo…

自动清理归档日志_从MYSQL 数据库归档 到 归档设计

到数据归档&#xff0c;很多人的第一个概念就是&#xff0c;不就是无用的数据&#xff0c;换个地方放吗&#xff0c;直接拷贝&#xff0c;删除不就得了&#xff0c;有那么麻烦。我见到过的&#xff0c;听到过的数据库归档的方法有以下几种1 数据通过人工的手段来进行清理&…

Android支付宝SDK开发笔记

一、准备工作 〉1、下载开发包 https://b.alipay.com/order/productDetail.htm?productId2014110308141993&tabId4#ps-tabinfo-hash 压缩包下的“支付宝钱包支付接口开发包”中即有Andoid使用支付宝的JAR和Demo 〉2、创建支付宝应用 在支付宝开放平台申请创建应用 https:/…

一天一个类,一点也不累之HashSet

最近忙着一个小项目结题&#xff0c;故没能按时完成【一天一个类&#xff0c;一点也不累】&#xff0c;还好项目优秀&#xff0c;算是对自己一点点的安慰和鼓励。~~~ 今天要说的是HashSet 既然是继承自Set&#xff0c;那么就必须有Set的一些属性&#xff0c;比如不能容许有相同…

[BZOJ1502]月下柠檬树(自适应辛普森积分)

1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1387 Solved: 739[Submit][Status][Discuss]Description 李哲非常非常喜欢柠檬树&#xff0c;特别是在静静的夜晚&#xff0c;当天空中有一弯明月温柔地照亮地面上的景物时&#xff0c;他必会悠闲地…

擎天出口退税软件_新版申报系统退税申报注意事项

前言&#xff1a;随着税务信息化建设“后金三”时代的不断深入,2019年年底国家税务总局启动出口退税管理系统整合(进入金税三期)项目&#xff0c;经过广东、大连两个地区试点&#xff0c;即将于今年年底前在全国完成金税三期审核系统的上线工作&#xff0c;至此&#xff0c;出口…

pcie 的function_PCIe扫盲——BDF与配置空间

前面的文章中介绍过&#xff0c;每一个PCIe设备可以只有一个功能(Function)&#xff0c;即Fun0。也可以拥有最多8个功能&#xff0c;即多功能设备(Multi-Fun)。不管这个PCIe设备拥有多少个功能&#xff0c;其每一个功能都有一个唯一独立的配置空间(Configuration Space)与之对应…

dubbo接口快速测试技巧

在分布式系统的开发中&#xff0c;用到了dubbozookeeper技术&#xff0c;最近遇到一个问题&#xff0c;产品上线后&#xff0c;我负责的模块出了问题&#xff0c;某个bean中某个字段的值一直为null&#xff0c;而这个bean是我调用注册在zookeeper上的一个服务查询到的&#xff…