【练习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
【练习5.9】图像掩码、礼帽、cvCopy、图像融合、cvCvtColor相关推荐
- opencv学习笔记14:图像礼帽,图像黑帽
python + OpenCV 图像礼帽 图像礼帽 也叫图像顶帽 礼帽图像=原始图像-开运算图像 得到噪声图像 开运算:先腐蚀再膨胀 使用对象:二值图像 使用方法:morphologyEx cv2.M ...
- 基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)
腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色, ...
- pythonopencv图像形态_python+opencv图像形态学处理详细解释(膨胀、腐蚀、开闭运算、礼帽和黑猫)...
python+opencv图像形态学处理 本篇博客主要是关于形态学中的腐蚀.膨胀.开运算.闭运算.礼帽和黑帽的函数用法. 内容会比较,为方便查阅.代码的解释会写在代码中. 用于测试的图像原图: 一.腐 ...
- 《预训练周刊》第67期: ChatGPT引起热议、量化技术、Meta图像掩码加速CLIP
No.67 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...
- pil对图像加透明 python_关于python:如何使用PIL将透明png图像与另一个图像合并...
我有一个透明的png图像"foo.png" 我打开了另一张图片 im = Image.open("foo2.png"); 现在我需要的是将foo.png与foo ...
- 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道
主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...
- 背景图像位置css_CSS背景图像大小教程–如何对整页背景图像进行编码
背景图像位置css This tutorial will show you a simple way to code a full page background image using CSS. A ...
- OpenCV | OpenCV将图像转换成黑白图像(二进制)
将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...
- R语言ggplot2可视化:可视化多个图像并组合起来(如果没有对齐,看着丑陋))、保证组合的图像图像区域对齐或者图像整体对齐(Align plot areas in ggplot)
R语言ggplot2可视化:可视化多个图像并组合起来(如果没有对齐,看着丑陋)).保证组合的图像图像区域对齐或者图像整体对齐(Align plot areas in ggplot) 目录
- Python将两个图像合并成一个图像(横向合并)
Python将两个图像合并成一个图像(横向合并) 目录 Python将两个图像合并成一个图像(横向合并) #原始图像
最新文章
- C/C++基础面试题集锦
- oracle 用函数返回对象集合
- C语言 字符串相关的函数
- 获取拍照图片,显示大图像
- python中return和printf的区别_Python格式化输出:%s和format()用法比较
- 一个大胖鲸-Docker(1)
- [转载] 【python】定义带参数的装饰器,用装饰器限制函数的参数类型
- 闲聊libhybris
- 如何用css进行网页布局,_技术笔记_课程笔记
- 备案号链接工信部_网站主页底部网站备案号的悬挂和链接的工作通知
- 八、属性和方法(属性和方法的概念以及使用,注意,新特性中的自动属性,方法的重载)...
- c语言报告 实验环境怎么写,C语言实验报告
- 打印机连接计算机用什么端口,如何设置打印机端口,打印机端口设置的方法步骤...
- C语言有大约40个运算符,最常用的有这些
- Ansible hosts文件写法
- 供参考的一些APP推广渠道
- 快排三种基本解法以及两种快排优化
- sqljdbc4.jar和sqljdbc.jar下载
- [问题]mpu9250+bmp280数据读取
- Java毕设项目派大星水产商城mp4(java+VUE+Mybatis+Maven+Mysql)
热门文章
- 登录网页后要弹出一个新标签_连永久链接都不会,还做什么新媒体?
- gitlab使用_使用 Docker 部署 Gitlab
- js判断时间是早上还是下午_牛奶早上喝好,还是晚上喝好?没想到“最佳时间”是这个点,颠覆了!...
- 国际旅游管理专业跨专业考计算机,旅游管理考研我想跨专业考旅游管理专业的研究 – 手机爱问...
- 卷积神经网络语音识别_用于物体识别的3D卷积神经网络
- 注册表中shell文件不见了_win7系统注册表中的shell文件不小心被删除的解决方法...
- 160 - 25 CodeZero.1
- 【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)
- 数据科学和统计学_数据科学中的统计
- c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break