OpenCV——实验结果输出《图像基本操作》

news2024/11/18 3:44:12

1.图像融合

图像融合主要使用的函数为
cv2.addWeighted()

#============================图像融合============================
# img_cat + img_dog  #shapes (414,500,3) (429,499,3)
img_dog = cv2.resize(img_dog,(500,414))#resize函数,不考虑图像形变问题。
print(img_dog.shape)
#两张图片的权重相同,gamma修正系数,0为亮度值
res = cv2.addWeighted(img_cat,0.5,img_dog,0.5,0)#主要功能就是将两幅图像合成为一幅图像
plt.imshow(res)
plt.show()

res = cv2.resize(img,(0,0),fx=4,fy=4)#x轴y轴的倍数
plt.imshow(img)
plt.show()

请添加图片描述

2.边界填充

#============================边界填充============================
top_size,bottom_size,left_size,right_size = (50,50,50,50)
#总共有5种填充方法,填充函数使用的是copyMakeBorder,方法可以选择cv2.,img是图片,然后设置填充大小
'''
BORDER_REPLICATE:复制法,也就是复制最边缘像素。
BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
BORDER_CONSTANT:常量法,常数值填充。
'''
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)
fig,ax = plt.subplots(2,3,figsize=(20,6))
pic = [img,replicate,reflect,reflect101,wrap,constant]
ax[0][0].imshow(pic[0])

ax[0][1].imshow(pic[1])

ax[0][2].imshow(pic[2])

ax[1][0].imshow(pic[3])

ax[1][1].imshow(pic[4])

ax[1][2].imshow(pic[5])
plt.show()

请添加图片描述

3.图像阈值

retval, dst = cv2.threshold(src, thresh, maxval, type[, dst])

参数解释:

  1. src:输入图像,可以是灰度图像或彩色图像。

  2. thresh:阈值,用于将像素值与之进行比较。

  3. maxval:用于设置像素的最大值。

  4. type:阈值化类型,控制像素分类的方式。常用的类型包括:

    4.1. cv2.THRESH_BINARY:二值化阈值化类型,大于阈值的像素值设 置为 maxval,小于等于阈值的像素值设置为0。

    4.2. cv2.THRESH_BINARY_INV:反二值化阈值化类型,大于阈值的像素值设置为0,小于等于阈值的像素值设置为 maxval。

    4.3. cv2.THRESH_TRUNC:截断阈值化类型,大于阈值的像素值设置为阈值,小于等于阈值的像素值保持不变。

    4.4. cv2.THRESH_TOZERO:零阈值化类型,大于阈值的像素值保持不变,小于等于阈值的像素值设置为0。

    4.5. cv2.THRESH_TOZERO_INV:反零阈值化类型,大于阈值的像素值设置为0,小于等于阈值的像素值保持不变。

dst(可选):输出图像,与输入图像大小和类型相同。
函数返回值:

retval:选择的阈值,根据所选择的阈值化类型进行计算。

dst:输出的二值图像。

cv2.threshold函数可以用于图像分割、边缘检测、特征提取等各种图像处理任务中,根据不同的阈值化类型和参数选择,可以实现不同的效果。

ret,thresh1 = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)
titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in range(6):
    plt.subplot(2,3,i+1)
    plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

请添加图片描述

参考链接
https://blog.csdn.net/jinmie0193/article/details/79969385
https://blog.csdn.net/ShaoDu/article/details/96429733?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-96429733-blog-121455266.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-96429733-blog-121455266.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=2

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

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

相关文章

java编写金字塔

一、实心金字塔 首先,尝试写一个逐层加1个*的金字塔: 可以看出,每一层由空格和*组成,且空格*的总数为底部基石的数量,那么前后空格数就是(底部基石数 - 各层星星数)*1/2,然后拼接字…

C# 特性(Attribute)总结

目录 特性是什么? 如何使用特性? (1).Net 框架预定义特性 (2)自定义特性 为什么要使用特性? 特性的应用 特性实现枚举展示描述信息 特性是什么? 特性(Attribute&…

基于spss的多元统计分析 之 聚类分析+判别分析(2/8)

实验目的: 1.掌握聚类分析及判别分析的基本原理; 2.熟悉掌握SPSS软件进行聚类分析及判别分析的基本操作; 3.利用实验指导的实例数据,上机熟悉聚类分析及判别分析方法。 实验前预习:…

js中原型和原型链的理解(透彻)

js中原型、原型链、继承的理解(透彻) 1、前言1.1 什么是函数对象1.2 什么是实例对象1.3 什么是原型对象1.4 构造函数、原型对象、实例对象的关系 2、原型3、原型链4、原型的相关属性及方法5、总结 1、前言 1.1 什么是函数对象 函数对象就是我们平时称呼…

centos连接XShell

先设置网络自动连接,为Xshell 连接centos做准备 选择应用程序->系统工具->设置 选择网络,如果有线没有打开,选择打开,在点击设置 记住ipv4地址,选择自动连接,然后应用 最后鼠标右键点击桌面&#xf…

RabbitMQ入门案例之Topic模式

前言: 本文章将介绍RabbitMQ中的Topic(主题)模式,其中还会涉及 ‘#’ 和 ‘*’ 两个通配符在RabbitMQ中的区别。 官网文档地址:https://rabbitmq.com/getstarted.html 什么是Topic模式 RabbitMQ的Topic模式是一种基于…

SpringBoot 如何使用 Spring Integration 处理事件

SpringBoot 如何使用 Spring Integration 处理事件 Spring Integration 是 Spring Framework 的一个扩展,它提供了一种基于消息传递的集成模式。使用 Spring Integration,我们可以将不同的应用程序、系统和服务连接起来,从而实现数据的传递、…

VMware中Linux虚拟机配置静态ip

一、输入ip addr查看ip地址 二、输入cd /etc/sysconfig/network-scripts进入centos网络配置文件夹 三、接着输入ls查看目录 四、 输入vi ifcfg-ens33进入网卡配置 五、 进入以后是这个界面,红色方框里的内容是需要手动修改的,下面图片里已经修改过了。 …

【C】分支和循环语句的简单介绍

语句 分支语句if语句语法结构代码演示 switch语句语法结构代码演示 循环语句while循环语法结构代码分析 for循环语法结构代码演示 do...while循环语法结构代码分析 什么是语句呢? 在C语言中由分号(;)隔开的就是一条语句。 分支语句 if语句 …

【算法设计与分析】期末考试知识总结(知识超浓缩版)

目录 简要介绍 复杂度 迭代 插入排序 二分查找 快排划分 选择排序 计数排序 基数排序 桶排序 递归 递归式的计算-四种方法 欧几里得算法 汉诺塔问题 快速排序 归并排序 堆排序 分治 二维极大点问题 一维最邻近点对 二维最邻近点对 逆序对的数目 凸包 最大字段…

RecyclerView 低耦合单选、多选模块实现

作者:丨小夕 前言 需求很简单也很常见,比如有一个数据列表RecyclerView,需要用户去点击选择一个或多个数据。 实现单选的时候往往简单下标记录了事,实现多选的时候就稍微复杂去处理集合和选中。随着项目选中需求增多&#xff0c…

k8s的部署

二进制搭建 Kubernetes v1.20 k8s集群master01:192.168.92.30 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:192.168.92.21 k8s集群node01:192.168.92.40 kubelet kube-proxy docker k8s集群node02…

阿里云热修复打补丁包注意事件

1、每次发布app到应用市场前,注意保存没有加固前的apk文件和mapping.txt 2、修复好bug,打包app前,要做的事情 (1)先把有问题的apk的mapping.txt文件复制到/app路径下 (2)修改混淆配置:将-printmapping mapping.txt使…

Android蓝牙协议知识汇总

蓝牙协议下载 蓝牙技术联盟网址:https://www.bluetooth.com/ 在这个网址搜索,比如: 在搜索结果中找到蓝牙协议规范: 点击上面网址: 蓝牙手册里包含了部分核心协议,比如L2CAP、SDP、ATT、GATT&#x…

Python 100%解析svg-captcha验证码

前言 前段时间接到一个需求,登陆某一个网站,然后录入数据;本来以为是一个很简单的需求,结果遇到几个难点: 登陆的时候需要有验证码验证码是一个请求路径,每请求一次验证码都不一样 本来一开始以为是常用的…

探究 CoreData 使用索引(Index)机制加速查表究竟如何实现?

问题现象 在  App 的开发中,CoreData 到底能不能用索引机制(Index)来加速查表?如果可以,又该如何创建和使用索引呢? 这是一个连  官方文档都模棱两可,Stackoverflow 里诸多大神都闪烁其词的话题。 在本篇博文中,您将学到如下内容: 什么是 CoreData 索引(Index…

SpringBoot + Ant Design Vue实现数据导出功能

SpringBoot Ant Design Vue实现数据导出功能 一、需求二、前端代码实现2.1 显示实现2.2 代码逻辑 三、后端代码实现3.1 实体类3.2 接收参数和打印模板3.3 正式的逻辑3.4 Contorller 一、需求 以xlsx格式导出所选表格中的内容要求进行分级设置表头颜色。 二、前端代码实现 2…

20230524 taro+vue3+webpack5+pdfjs时打包pdfjs进不来的问题

关闭taro的terser就可以了 terser:{enable:false }

UE中创建异步任务编辑器工具(Editor Utility Tasks)

在UE中我们往往需要执行一些编辑器下的异步任务,例如批量生成AO贴图、批量合并静态模型等,又不想阻碍主线程,因此可以使用Editor Utility Tasks直接创建UE编辑器下的异步任务。 如果你不太了解UE编辑器工具,可以参考这篇文章&…

Spring Boot 中自定义数据校验注解

Spring Boot 中自定义数据校验注解 在 Spring Boot 中,我们可以使用 JSR-303 数据校验规范来校验表单数据的合法性。JSR-303 提供了一些常用的数据校验注解,例如 NotNull、NotBlank、Size 等。但是,在实际开发中,我们可能需要自定…