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

题目要求:

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

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

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

  1. opencv学习笔记14:图像礼帽,图像黑帽

    python + OpenCV 图像礼帽 图像礼帽 也叫图像顶帽 礼帽图像=原始图像-开运算图像 得到噪声图像 开运算:先腐蚀再膨胀 使用对象:二值图像 使用方法:morphologyEx cv2.M ...

  2. 基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)

    腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色, ...

  3. pythonopencv图像形态_python+opencv图像形态学处理详细解释(膨胀、腐蚀、开闭运算、礼帽和黑猫)...

    python+opencv图像形态学处理 本篇博客主要是关于形态学中的腐蚀.膨胀.开运算.闭运算.礼帽和黑帽的函数用法. 内容会比较,为方便查阅.代码的解释会写在代码中. 用于测试的图像原图: 一.腐 ...

  4. 《预训练周刊》第67期: ChatGPT引起热议、量化技术、Meta图像掩码加速CLIP

    No.67 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...

  5. pil对图像加透明 python_关于python:如何使用PIL将透明png图像与另一个图像合并...

    我有一个透明的png图像"foo.png" 我打开了另一张图片 im = Image.open("foo2.png"); 现在我需要的是将foo.png与foo ...

  6. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道

    主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...

  7. 背景图像位置css_CSS背景图像大小教程–如何对整页背景图像进行编码

    背景图像位置css This tutorial will show you a simple way to code a full page background image using CSS. A ...

  8. OpenCV | OpenCV将图像转换成黑白图像(二进制)

    将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...

  9. R语言ggplot2可视化:可视化多个图像并组合起来(如果没有对齐,看着丑陋))、保证组合的图像图像区域对齐或者图像整体对齐(Align plot areas in ggplot)

    R语言ggplot2可视化:可视化多个图像并组合起来(如果没有对齐,看着丑陋)).保证组合的图像图像区域对齐或者图像整体对齐(Align plot areas in ggplot) 目录

  10. Python将两个图像合并成一个图像(横向合并)

    Python将两个图像合并成一个图像(横向合并) 目录 Python将两个图像合并成一个图像(横向合并) #原始图像

最新文章

  1. C/C++基础面试题集锦
  2. oracle 用函数返回对象集合
  3. C语言 字符串相关的函数
  4. 获取拍照图片,显示大图像
  5. python中return和printf的区别_Python格式化输出:%s和format()用法比较
  6. 一个大胖鲸-Docker(1)
  7. [转载] 【python】定义带参数的装饰器,用装饰器限制函数的参数类型
  8. 闲聊libhybris
  9. 如何用css进行网页布局,_技术笔记_课程笔记
  10. 备案号链接工信部_网站主页底部网站备案号的悬挂和链接的工作通知
  11. 八、属性和方法(属性和方法的概念以及使用,注意,新特性中的自动属性,方法的重载)...
  12. c语言报告 实验环境怎么写,C语言实验报告
  13. 打印机连接计算机用什么端口,如何设置打印机端口,打印机端口设置的方法步骤...
  14. C语言有大约40个运算符,最常用的有这些
  15. Ansible hosts文件写法
  16. 供参考的一些APP推广渠道
  17. 快排三种基本解法以及两种快排优化
  18. sqljdbc4.jar和sqljdbc.jar下载
  19. [问题]mpu9250+bmp280数据读取
  20. Java毕设项目派大星水产商城mp4(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 登录网页后要弹出一个新标签_连永久链接都不会,还做什么新媒体?
  2. gitlab使用_使用 Docker 部署 Gitlab
  3. js判断时间是早上还是下午_牛奶早上喝好,还是晚上喝好?没想到“最佳时间”是这个点,颠覆了!...
  4. 国际旅游管理专业跨专业考计算机,旅游管理考研我想跨专业考旅游管理专业的研究 – 手机爱问...
  5. 卷积神经网络语音识别_用于物体识别的3D卷积神经网络
  6. 注册表中shell文件不见了_win7系统注册表中的shell文件不小心被删除的解决方法...
  7. 160 - 25 CodeZero.1
  8. 【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)
  9. 数据科学和统计学_数据科学中的统计
  10. c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break