opencv—常用函数学习_“干货“_3
目录
八、图像拼接
水平拼接图像 (hconcat)
垂直拼接图像 (vconcat)
全景图像拼接 (Stitcher)
九、颜色通道及数据格式
转换图像的颜色空间 (cvtColor)
转换图像的数据类型 (convertTo)
分离和合并颜色通道 (split 和 merge)
提取和插入颜色通道 (extractChannel 和 insertChannel)
应用颜色映射 (applyColorMap)
十、图像复制函数
使用 clone 进行深拷贝
使用 copyTo 进行复制
使用 copyTo 和掩码进行复制
十一、图像变化与增强
缩放、计算绝对值并转换为8位 (convertScaleAbs)
计算自然对数 (log)
计算指数 (exp)
计算幂 (pow)
计算平方根 (sqrt)
直方图均衡化 (equalizeHist)
自适应直方图均衡化 (CLAHE)
细节增强 (detailEnhance)
改变光照条件 (illuminationChange)
http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总(VIP)
散的正在一部分一部分发,不需要VIP。
资料整理不易,有用话给个赞和收藏吧。
八、图像拼接
在OpenCV中,图像拼接是指将多幅图像合并成一幅图像的过程。OpenCV提供了几种常用的函数和类来实现图像拼接。下面介绍这些拼接相关的函数及其使用示例。
| 图像拼接函数 | ||
| hconcat | vconcat | Stitcher |
| 水平拼接图像 | 垂直拼接图像 | 全景图像拼接类 |
水平拼接图像 (hconcat)
import cv2
import numpy as np# 创建两个示例图像
image1 = np.full((100, 200, 3), 255, dtype=np.uint8) # 白色图像
image2 = np.full((100, 200, 3), 0, dtype=np.uint8) # 黑色图像# 水平拼接图像
result_hconcat = cv2.hconcat([image1, image2])
cv2.imshow('Horizontal Concatenation', result_hconcat)
cv2.waitKey(0)
cv2.destroyAllWindows()
垂直拼接图像 (vconcat)
# 垂直拼接图像
result_vconcat = cv2.vconcat([image1, image2])
cv2.imshow('Vertical Concatenation', result_vconcat)
cv2.waitKey(0)
cv2.destroyAllWindows()
全景图像拼接 (Stitcher)
# 读取待拼接的图像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')# 创建Stitcher对象并进行拼接
stitcher = cv2.Stitcher_create()
status, stitched = stitcher.stitch([image1, image2])if status == cv2.Stitcher_OK:cv2.imshow('Stitched Image', stitched)cv2.waitKey(0)cv2.destroyAllWindows()
else:print("拼接失败")
这些示例展示了如何使用OpenCV中的拼接函数来实现图像的水平拼接、垂直拼接以及全景图像拼接。这些函数和类在图像处理、计算机视觉以及图像分析中非常有用,可以根据具体需求灵活应用。
九、颜色通道及数据格式
在OpenCV中,颜色通道及数据格式的转换和操作是图像处理的重要部分。下面介绍这些相关的函数及其使用示例。
| 颜色通道及数据格式 | |||
| cvtColor | convertTo | split | merge |
| 转换图像的颜色空间 | 转换图像的数据类型 | 分离图像的颜色通道 | 合并图像的颜色通道 |
| extractChannel | insertChannel | applyColorMap | |
| 提取单个颜色通道 | 插入单个颜色通道 | 应用颜色映射 | |
转换图像的颜色空间 (cvtColor)
import cv2
import numpy as np# 读取图像
image = cv2.imread('path_to_image.jpg')# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
转换图像的数据类型 (convertTo)
# 转换数据类型为float32
float_image = np.float32(image)
converted_image = float_image / 255.0
cv2.imshow('Converted Image', converted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
分离和合并颜色通道 (split 和 merge)
# 分离颜色通道
b, g, r = cv2.split(image)# 合并颜色通道
merged_image = cv2.merge([b, g, r])
cv2.imshow('Merged Image', merged_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
提取和插入颜色通道 (extractChannel 和 insertChannel)
# 提取蓝色通道
blue_channel = cv2.extractChannel(image, 0)
cv2.imshow('Blue Channel', blue_channel)
cv2.waitKey(0)
cv2.destroyAllWindows()# 插入通道
new_image = cv2.insertChannel(blue_channel, image, 1)
cv2.imshow('Image with Inserted Channel', new_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
应用颜色映射 (applyColorMap)
# 应用颜色映射
color_mapped_image = cv2.applyColorMap(gray_image, cv2.COLORMAP_JET)
cv2.imshow('Color Mapped Image', color_mapped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
这些示例展示了如何使用OpenCV中的函数来处理图像的颜色通道和数据格式。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像处理任务。
十、图像复制函数
在OpenCV中,图像复制是基本的操作,可以通过 clone 和 copyTo 函数来实现。下面介绍这些函数及其使用示例。
| 图像复制函数 | |
| clone | copyTo |
| 创建一个图像的深拷贝 | 将图像数据复制到另一个矩阵,可以选择性地使用掩码 |
使用 clone 进行深拷贝
import cv2
import numpy as np# 读取图像
image = cv2.imread('path_to_image.jpg')# 使用 clone 进行深拷贝
cloned_image = image.clone()# 显示原图和拷贝图
cv2.imshow('Original Image', image)
cv2.imshow('Cloned Image', cloned_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
使用 copyTo 进行复制
# 创建一个与原图像相同大小的空图像
copy_image = np.zeros_like(image)# 直接复制图像
image.copyTo(copy_image)# 显示原图和拷贝图
cv2.imshow('Original Image', image)
cv2.imshow('Copy Image', copy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
使用 copyTo 和掩码进行复制
# 创建一个掩码
mask = np.zeros(image.shape[:2], dtype=np.uint8)
mask[50:150, 50:150] = 255 # 在掩码上定义一个区域# 复制图像中的特定区域
masked_copy = np.zeros_like(image)
image.copyTo(masked_copy, mask=mask)# 显示原图、掩码和掩码复制图
cv2.imshow('Original Image', image)
cv2.imshow('Mask', mask)
cv2.imshow('Masked Copy Image', masked_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()
这些示例展示了如何使用OpenCV中的 clone 和 copyTo 函数来复制图像。根据具体的需求,可以选择直接复制整个图像或使用掩码复制特定区域的图像数据。这些操作在图像处理、图像增强和计算机视觉应用中非常有用。
十一、图像变化与增强
在OpenCV中,图像变换与增强是图像处理的重要组成部分。下面介绍一些常用的图像变换与增强函数及其使用示例。
| 图像变换与增强函数 | ||||
| convertScaleAbs | log | exp | pow | sqrt |
| 缩放、计算绝对值并转换为8位 | 计算每个元素的自然对数 | 计算每个元素的指数 | 计算每个元素的幂 | 计算每个元素的平方根 |
| equalizeHist | CLAHE | detailEnhance | illuminationChange | |
| 直方图均衡化 | 自适应直方图均衡化(对比度受限的自适应直方图均衡化) | 细节增强 | 改变光照条件 | |
缩放、计算绝对值并转换为8位 (convertScaleAbs)
import cv2
import numpy as np# 读取图像
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)# 缩放、计算绝对值并转换为8位
scaled_image = cv2.convertScaleAbs(image, alpha=1.5, beta=0)
cv2.imshow('Scaled Image', scaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
计算自然对数 (log)
# 计算每个元素的自然对数
log_image = cv2.log(np.float32(image) + 1) # 加1防止对数的负无穷
cv2.imshow('Log Image', cv2.convertScaleAbs(log_image))
cv2.waitKey(0)
cv2.destroyAllWindows()
计算指数 (exp)
# 计算每个元素的指数
exp_image = cv2.exp(np.float32(image))
cv2.imshow('Exp Image', cv2.convertScaleAbs(exp_image))
cv2.waitKey(0)
cv2.destroyAllWindows()
计算幂 (pow)
# 计算每个元素的幂
pow_image = cv2.pow(np.float32(image), 2)
cv2.imshow('Pow Image', cv2.convertScaleAbs(pow_image))
cv2.waitKey(0)
cv2.destroyAllWindows()
计算平方根 (sqrt)
# 计算每个元素的平方根
sqrt_image = cv2.sqrt(np.float32(image))
cv2.imshow('Sqrt Image', cv2.convertScaleAbs(sqrt_image))
cv2.waitKey(0)
cv2.destroyAllWindows()
直方图均衡化 (equalizeHist)
# 直方图均衡化
equalized_image = cv2.equalizeHist(image)
cv2.imshow('Equalized Image', equalized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
自适应直方图均衡化 (CLAHE)
# 创建CLAHE对象
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))# 应用CLAHE
clahe_image = clahe.apply(image)
cv2.imshow('CLAHE Image', clahe_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
细节增强 (detailEnhance)
# 细节增强
detail_image = cv2.detailEnhance(image)
cv2.imshow('Detail Enhanced Image', detail_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
改变光照条件 (illuminationChange)
# 改变光照条件
illum_image = cv2.illuminationChange(image, mask=np.ones(image.shape, dtype=np.uint8), alpha=0.5, beta=2)
cv2.imshow('Illumination Changed Image', illum_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
这些示例展示了如何使用OpenCV中的图像变换与增强函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像处理和增强任务。
相关文章:
opencv—常用函数学习_“干货“_3
目录 八、图像拼接 水平拼接图像 (hconcat) 垂直拼接图像 (vconcat) 全景图像拼接 (Stitcher) 九、颜色通道及数据格式 转换图像的颜色空间 (cvtColor) 转换图像的数据类型 (convertTo) 分离和合并颜色通道 (split 和 merge) 提取和插入颜色通道 (extractChannel 和 in…...
用Docker来开发
未完成。。。 现在好像用Docker是越来越多了。之前其实也看过docker的原理,大概就是cgroup那些,不过现在就不看原理了,不谈理论,只看实际中怎么用,解决眼前问题。 用docker来做开发,其实就是解决的编译环境…...
从0开始的STM32HAL库学习2
外部中断(HAL库GPIO讲解) 今天我们会详细地学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数。 准备工作: 1、STM32开发板(我的是STM32F103C8T6) 2、STM32CubeMx软件、 IDE: Keil软件 3、STM32F1xx/ST…...
【MySQL篇】Percona XtraBackup工具备份指南:常用备份命令详解与实践(第二篇,总共五篇)
💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...
Spock单元测试框架使用介绍和实践
背景 单元测试是保证我们写的代码是我们想要的结果的最有效的办法。根据下面的数据图统计,单元测试从长期来看也有很大的收益。 单元测试收益: 它是最容易保证代码覆盖率达到100%的测试。可以⼤幅降低上线时的紧张指数。单元测试能更快地发现问题。单元测试的性…...
web安全之跨站脚本攻击xss
定义: 后果 比如黑客可以通过恶意代码,拿到用户的cookie就可以去登陆了 分类 存储型 攻击者把恶意脚本存储在目标网站的数据库中(没有过滤直接保存),当用户访问这个页面时,恶意脚本会从数据库中被读取并在用户浏览器中执行。比如在那些允许用户评论的…...
TCP与UDP的理解
文章目录 UDP协议UDP协议的特点UDP的应用以及杂项 TCP协议TCP协议段格式解释和TCP过程详解确认应答机制 -- 序号和确认序号以及6位标志位中的ACK超时重传机制连接管理机制 与标志位SYN,FIN,ACK滑动窗口与16位窗口大小流量控制拥塞控制延迟应答捎带应答和面向字节流粘包问题TCP异…...
有效应对服务器遭受CC攻击的策略与实践
分布式拒绝服务(DDoS)攻击,尤其是其中的HTTP洪水攻击或称为CC攻击(Challenge Collapsar),是当今互联网安全领域的一大挑战。这种攻击通过大量合法的请求占用大量网络资源,导致服务器无法正常响应…...
STM32判断休眠
STM32是否进入休眠模式(或称为睡眠模式)的判断主要基于其功耗状态、内部时钟的关闭情况以及唤醒后的行为。以下是根据参考文章提供的信息,判断STM32是否进入休眠模式的方法: 功耗状态: STM32在休眠模式下,功耗会显著降低。这是因为休眠模式仅关闭了内核时钟,但外设仍然保…...
TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码
多语言跨境电商外贸商城 TikTok内嵌商城,商家入驻一键铺货一键提货 全开源完美运营,接在tiktok里面的商城内嵌,也可单独分开出来当独立站运营 二十一种语言,可以做很多国家的市场,支持商家入驻,多店铺等等…...
前端学习(二)
这篇文章是紧接着前一篇前端学习写的,主要要写的是js剩下的基础知识 事件的绑定 什么是事件? HTML 事件可以是浏览器行为,也可以是用户行为。 当这些一些行为发生时,可以自动触发对应的JS函数的运行,我们称之为事件发生.JS的事件驱动指的就是…...
链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外
因为上一篇没对微服务代码很详细地说明,所以在此借花献佛,使用开源的微服务代码去说明如何去做链路追踪。 项目是开源项目,fork到github以及gitee中,然后拉取到本地 后端代码: https://gitee.com/jelex/mall-swarm.gi…...
用Agent大模型,我发现了Prompt工程师的10大必备技能
随着 AI 如此快速的发展,目前求职市场上已经出现了 AI提示词 岗位。 大家应该跟我一样,对这种新兴岗位充满好奇心,比如:想知道这类岗位目前的需求量、技能要求、薪资情况等等。 这两天我用 Agent 大模型,对AI提示词岗…...
【GraphRAG】微软 graphrag 效果实测
GraphRAG 本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。 1. Source 代码仓库: Welcome to GraphRAGhttps://microsoft.github.io/graphrag/ 微软文章1(2024.2.13):GraphRAG: Unlocking…...
十大常用加密软件排行榜|2024企业常用加密软件推荐
在2024年的市场环境中,随着数字化转型的深入和网络威胁的日益复杂,企业对数据安全的重视达到了新高度。加密软件作为保护信息免遭未授权访问和恶意攻击的关键工具,其重要性日益凸显。以下是根据市场反馈和专业评测整理的2024年度十大常用加密…...
lua 游戏架构 之 资源加载 LoaderManager (一)
定义一个 LoaderManager class,用于管理各种资源加载器。它使用了对象池(Object Pool)来优化资源加载器的创建和销毁,从而提高性能 举例定义一个 PrefabLoader --[[Desc: 封装AAS的接口,加载Prefab --]]---alias Pre…...
【人工智能】-- 迁移学习
个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉引言 🍉迁移学习 🍈基本概念 🍍定义 🍌归纳迁移学习(Induct…...
Flink源码学习资料
Flink系列文档脑图 由于源码分析系列文档较多,本人绘制了Flink文档脑图。和下面的文档目录对应。各位读者可以选择自己感兴趣的模块阅读并参与讨论。 此脑图不定期更新中…… 文章目录 以下是本人Flink 源码分析系列文档目录,欢迎大家查阅和参与讨论。…...
HarmonyOS4.0开发-环境配置
鸿蒙应⽤开发快速体验 1.1. 准备开发环境 1.1.1 安装IDE 鸿蒙应⽤开发需要使⽤配套的IDE——HUAWEI DevEco Studio。 DevEco Studio基于IntelliJIDEA Community(IDEA社区版)构建,为鸿蒙应⽤提供了⼀站式开发环境,集成了开发、运⾏…...
GESP CCF C++ 三级认证真题 2024年6月
第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有()种。 A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 &#x…...
BepInEx跨平台部署完全指南:从环境配置到性能优化
BepInEx跨平台部署完全指南:从环境配置到性能优化 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 部署挑战自测表 在开始部署前,请先回答以下问题…...
平面六杆机构的运动仿真(毕业论文+CAD图纸+开题报告+外文翻译)
平面六杆机构作为机械传动领域的重要构件,其运动特性直接影响机械系统的整体性能。该机构由六个刚性杆件通过转动副或移动副连接形成闭合环路,通过调整杆长比例与铰链位置,可实现复杂轨迹输出与多自由度运动控制。相较于四杆机构,…...
Qwen3-Reranker-0.6B效果展示:代码搜索Query ‘Python list to dict‘重排
Qwen3-Reranker-0.6B效果展示:代码搜索Query Python list to dict重排 今天咱们来聊聊一个特别实用的AI工具——Qwen3-Reranker-0.6B。你可能听说过各种大语言模型,但这个模型有点不一样,它专门干一件事:帮你从一堆文本里找出最相…...
实战应用:从零到一,使用快马构建资料更新内容管理系统的完整案例
实战应用:从零到一,使用快马构建资料更新内容管理系统的完整案例 最近接手了一个资料大全的版本更新管理需求,需要搭建一个简单高效的内容管理系统。经过一番摸索,我发现用InsCode(快马)平台可以快速实现这个功能,整个…...
GHelper深度解析:华硕笔记本终极性能调校实战指南
GHelper深度解析:华硕笔记本终极性能调校实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...
IE浏览器已成过去式?Win10用户必看的IE性能优化与安全设置
IE浏览器性能优化与安全设置指南:告别卡顿与劫持困扰 微软宣布放弃IE浏览器已经过去多年,但这款"古董级"浏览器依然顽固地存在于我们的Windows系统中。对于许多企业用户和特定行业从业者来说,完全卸载IE并非可行选项——某些老旧的…...
OpenClaw多任务队列:nanobot处理并行请求方案
OpenClaw多任务队列:nanobot处理并行请求方案 1. 问题背景与需求场景 上周我在本地部署了一个基于OpenClaw的自动化助手,用于处理日常办公中的重复性任务。最初只是简单对接了单一大模型实例,但随着使用频率增加,很快遇到了一个…...
如何快速使用网站历史查看器:新手完整入门教程
如何快速使用网站历史查看器:新手完整入门教程 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你是否曾经…...
百川2-13B-4bits量化模型微基准测试:OpenClaw常用任务性能对比
百川2-13B-4bits量化模型微基准测试:OpenClaw常用任务性能对比 1. 测试背景与动机 上周在折腾OpenClaw自动化办公流程时,发现我的RTX 3090显卡在运行13B模型时显存频繁告警。这让我开始关注量化模型的实际表现——特别是当OpenClaw需要连续调用模型完成…...
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 想要找回珍贵的聊天记录却苦于微信加密机制?WechatDecrypt作为一款专业的…...
