便宜做网站的公司靠谱吗/网络营销论文
目录
八、图像拼接
水平拼接图像 (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…...

华为的热机备份和流量限制
要求: 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW4,生产区和办公区的流量走FW5 13,办公区上网用户限制流量不超过100M,…...

Vite的WebSocket
Vite的webSocket SocketJava Socket概述工作原理优势劣势 Java WebSocket概述工作原理代码示例nodeJS WebSocket优势劣势 vite中的WebSocket💫代码示例使用vite进行创建服务器并对Vue实行HMR 总结 Socket Java 中的 Socket 与 WebSocket 都用于网络通信,…...

Vue3项目基于Axios封装request请求
在 Vue 3 的项目开发中,使用 Axios 进行 HTTP 请求是非常常见的作法,为了更方便开发者更高效的进行代码编写和项目的维护,可以通过再次封装 Axios 来实现。 在本文中,博主将详细指导你如何在自己的 Vue 3 项目中使用 Axios 二次封…...

html(抽奖设计)
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>抽奖</title><style type"text/css">* {margin: 0;padding: 0;}.container {width: 800px;height: 800px;border: 1px dashed red;position: absolut…...

Linux·权限与工具(上)
1. shell命令以及运行原理 Linux严格意义上来说是一个操作系统,我们称之为 "核心(kernel)" ,但我们一般的用户不呢个直接使用到核心,因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序,来与核心…...

成为CMake砖家(2): macOS创建CMake本地文档的app
大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…...

基于opencv的图片加水印实现方案
加水印应该是个很常见的需求,但是网上找的代码,都感觉不太完善。记录下自己搞出来的一个方案 水印有几个需求: 中文文字水印文字倾斜满图都是,而不是只有一个地方水印文字所在之处完全展示水印 实现思路 准备水印图 我是这么…...

STM32 IAP 需要关注的一些事
1、首先要知道STM32的程序是如何分布在FLASH中的。 2、升级的时候涉及到两个程序,一个是bootloader,一个是user程序,这两个程序的功能分别的什么作用的? 3、编译的固件是怎么分布的?通过那个配置文件去指导编译器去排布…...

高并发服务器-使用多进程(Multi-Process)实现【C语言】
在上期的socket套接字的使用详解中(socket套接字的使用详解)最后实现的TCP服务器只能处理一个客户端的请求发送,当有其他客户端请求连接时会被阻塞。为了能同时处理多个客户端的连接请求,本期使用多进程的方式来解决。 解决方案步…...

线程控制
对线程的控制思路和进程相似,创建、等待、终止,只需要调用接口就行。但是在Linux下没有线程的概念,因为Linux的设计者认为,线程是一种轻量级的进程,毕竟创建线程只需要创建PCB。因此Linux中使用多线程必须使用第三方pt…...