【练习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、文…

nginx编译安装时添加echo模块

1. 首先下载模块源码&#xff1a;https://github.com/agentzh/echo-nginx-module/tags2. 解压到某个路径&#xff0c;假设为 /path/to/echo-nginx-module3. 使用下面命令编译并安装 Nginx$ wget http://sysoev.ru/nginx/nginx-1.0.11.tar.gz $ tar -xzvf nginx-1.0.11.tar.gz $…

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

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

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

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

STM8L芯片启动时钟分频问题及发现(转)

源&#xff1a;STM8L芯片启动时钟分频问题及发现 转载于:https://www.cnblogs.com/LittleTiger/p/4460684.html

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、打印标题行如果想在打印时每…

一个屌丝程序猿的人生(二十二)

林萧和母亲下高速的时候&#xff0c;已经是下午7点多。 开车行驶在北京的街道上&#xff0c;林萧隔着车窗&#xff0c;看着四周灯火通明的高楼大厦&#xff0c;不禁有些心潮澎湃。 当初在林萧还上初一的时候&#xff0c;林萧就来过一次北京。但那个时候只是跟着大人们&#xff…

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

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

leetcode 131. 分割回文串

leetcode 131. 分割回文串 题目 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“…

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…

mysql 表锁——读锁和写锁

注意&#xff0c; 0、表的索引类型必须是InnoDB.相关链接&#xff1a;http://www.cnblogs.com/CyLee/p/5579672.html 1、如果你使用Navicat Premium&#xff0c;有可能会出现程序bug无法解锁。但在正常环境下是没问题的 2、存储过程里不允许使用锁 3、phpmyadmin是每次刷新都会…

自动化测试遇到的难点_自动化测试过程中遇到的问题主要有什么?

1自动化测试过程中遇到的问题主要有什么&#xff1f;问题&#xff1a;自动化测试过程中遇到的问题主要有什么&#xff1f;回答&#xff1a;1.对自动化测试的期望值太高。很多人想把自动化测试完全替代人工测试&#xff0c;如果期望不现实&#xff0c;无论测试工具如何&#xff…

CSS快速入门-箭头和图标

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

[LeetCode] Count Numbers with Unique Digits 计算各位不相同的数字个数

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Example: Given n 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99]) Hint: A direct…