OpenCV||超细节的基本操作
一、图像读取
retval = cv2.imread(filename[, flags])
- filename:需要读取的图片路径名,支持多种图片格式,如JPEG、PNG、TIFF等。
- flags:一个可选参数,指定加载图像的颜色类型。常用的值包括:
- cv2.IMGEAD_ANYDEPTH:其值是2。若载入的图像深度为16位或32位,就返回对应深度的图像,否则转换为8位图像再返回。
cv2.IMREAD_COLOR:其值取1。以彩色模式加载图像,这是默认值。任何图像的透明度都会被忽略(这是默认标志)。cv2.IMREAD_GRAYSCALE:其值取0。以灰度模式加载图像。cv2.IMREAD_UNCHANGED:其值取-1。不加改变的载入原图,包括alpha通道。
注意事项:
1、imread文件路径除了不支持单右斜线形式(\),其他斜线形式都支持
2、imread文件路径不支持中文路径,如果要自持中文路径,可使用以下代码:
img = cv2.imdecode(np.fromfile(imgpath, dtype=np.unit8), -1)
二、 图像属性
- img.shape[0]读取图像行数
- img.shape[1]读取图像列数
- img.shape[2]读取图像通道数
- img.shape[:2]只读取图像行数和列数
三、图像保存
cv2.imwrite(filename, img[, params])
- filename:
- 类型:字符串
- 说明:要保存的图像文件名,包括文件路径和文件扩展名(如
.jpg、.png等)。文件路径可以是相对路径或绝对路径。文件扩展名决定了保存的图像格式。 - 注意:在 Python 3 中,
cv2.imwrite()不支持中文和空格作为文件名(直接使用时可能会遇到问题),如果需要使用中文或特殊字符,可以考虑对文件名进行编码处理或使用其他库(如imageio)来保存图像。
- img:
- 类型:通常是一个二维或三维的 NumPy 数组,表示图像数据。
- 说明:要保存的图像数据。这个数组可以是灰度图像(二维数组)或彩色图像(三维数组,通常具有三个颜色通道,如 RGB 或 BGR)。
- params(可选):
- 类型:可选参数,通常是一个包含键值对的字典,用于指定保存图像时的特定参数。
- 说明:
- 压缩质量:对于某些格式(如 JPEG),可以指定压缩质量。例如,使用
cv2.IMWRITE_JPEG_QUALITY作为键,后跟一个整数值(范围从 0 到 100)作为压缩质量。 - 压缩级别:对于 PNG 格式,可以指定压缩级别(从 0 到 9)。例如,使用
cv2.IMWRITE_PNG_COMPRESSION作为键,后跟一个整数值作为压缩级别。 - 其他参数:根据 OpenCV 的不同版本和支持的格式,可能还有其他可用的参数。具体参数列表和用法应参考 OpenCV 的官方文档。
- 压缩质量:对于某些格式(如 JPEG),可以指定压缩质量。例如,使用
四、图像显示
def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows()
五、单窗口多图像显示
image = cv2.imread('img\\1.png')
cv_show("img", image)
image_cut1 = image[0:500, 0:500]
image_cut2 = image[500:1000, 500:1000]
hstack_image = np.hstack([image_cut1, image_cut2])
cv_show("hstack_image", hstack_image)
- 使用np.hstack()函数拼接图像,使用时图像的形状要一致。此时图像水平拼接。
- 使用np.vstack()函数图像会竖直拼接。
六、鼠标事件(了解)
img = np.full((500, 500), 0)
img = cv2.convertScaleAbs(img)def draw_circle(event, x, y, flags, param):if event == cv2.EVENT_LBUTTONDOWN:cv2.circle(img, (x, y), 50, (255, 255, 255), -1)cv2.namedWindow('img')
cv2.setMouseCallback('img', draw_circle)
while 1:cv2.imshow('img', img)n = cv2.waitKey(5)if n == ord('q'):breakelif n == ord('s'):cv2.imwrite('res.jpg', img)print('保存成功')
cv2.destroyAllWindows()
鼠标事件event有以下:
- 鼠标移动(EVENT_MOUSEMOVE):当鼠标在窗口内移动时触发。
- 左键按下(EVENT_LBUTTONDOWN):当鼠标左键被按下时触发。
- 左键释放(EVENT_LBUTTONUP):当鼠标左键被释放时触发。
- 左键双击(EVENT_LBUTTONDBLCLK):当鼠标左键被快速双击时触发。
- 右键按下(EVENT_RBUTTONDOWN)、右键释放(EVENT_RBUTTONUP)、右键双击(EVENT_RBUTTONDBLCLK):与左键类似,但对应的是鼠标右键。
- 中键按下(EVENT_MBUTTONDOWN)、中键释放(EVENT_MBUTTONUP)、中键双击(EVENT_MBUTTONDBLCLK):与左键和右键类似,但对应的是鼠标中键(如果有的话)。
- 滚轮滑动(EVENT_MOUSEWHEEL、EVENT_MOUSEHWHEEL):当鼠标滚轮被滚动时触发,EVENT_MOUSEWHEEL对应垂直滚动,EVENT_MOUSEHWHEEL对应水平滚动。
鼠标事件标志flags有以下:
| Flags常量 | 含义 |
|---|---|
| cv2.EVENT_FLAG_LBUTTON | 左键被按下或拖拽时设置 |
| cv2.EVENT_FLAG_RBUTTON | 右键被按下或拖拽时设置 |
| cv2.EVENT_FLAG_MBUTTON | 中键(滚轮按钮)被按下或拖拽时设置 |
| cv2.EVENT_FLAG_CTRLKEY | Ctrl键被按下时设置 |
| cv2.EVENT_FLAG_SHIFTKEY | Shift键被按下时设置 |
| cv2.EVENT_FLAG_ALTKEY | Alt键被按下时设置 |
七、滑动条事件(不做讲解)
链接跳转:
章节二、OpenCV||超简略的Numpy小tip
章节三、OpenCV||超详细的图像处理模块
章节四、OpenCV||超详细的灰度变换和直方图修正
章节五、OpenCV||超详细的图像平滑
章节六、OpenCV||超详细的几何变换
相关文章:
OpenCV||超细节的基本操作
一、图像读取 retval cv2.imread(filename[, flags]) filename:需要读取的图片路径名,支持多种图片格式,如JPEG、PNG、TIFF等。flags:一个可选参数,指定加载图像的颜色类型。常用的值包括: cv2.IMGEAD_A…...
算法训练(leetcode)第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列
刷题记录 *1143. 最长公共子序列1035. 不相交的线53. 最大子数组和392. 判断子序列 *1143. 最长公共子序列 leetcode题目地址 本题和718. 最长重复子数组相似,只是本题不要求连续,需要记录前面最长的子序列,在此基础上累计长度。 dp[i][j]…...
STM32——外部中断(EXTI)
目录 前言 一、外部中断基础知识 二、使用步骤 三、固件库实现 四、STM32CubeMX实现 总结 前言 外部中断(External Interrupt,简称EXTI)是微控制器用于响应外部事件的一种方式,当外部事件发生时(如按键按下、传感器信号…...
MySQL多实例部署
1、软件包下载 //环境:一台rocky Linux虚拟机,并且做好的基本配置及时钟同步,使用Xshell连接 [rootmysql ~]# yum -y install tar lrzsz libncurses* libaio perl//将包文件拖进去 [rootmysql ~]# rz -E rz waiting to receive. [rootmysql…...
云开发喝酒小程序3.6全新漂亮UI猜拳喝酒小程序 【已去除流量主】
云开发喝酒小程序3.6全新漂亮UI猜拳喝酒小程序 已去除流量主。UI特别漂亮,实属精品代码。 【已测】云开发喝酒小程序3.6漂亮UI猜拳喝酒小程序 已去除流量主。 云开发(serverless)小程序无需服务器,注册一个小程序就可以直接上线…...
图论进阶之路-最短路(Floyd)
时间复杂度:O(n^3) 使用场景:当需要得知任意两个点的最短距离以及其路径时使用 准备:需要两个矩阵 一个记录最短距离(D) 一个记录最短路径的最后一个结点(P) 其核心在于不断的判断越过中间…...
安装sqllab靶机之后,练习关卡报403 forbidden
解决办法: 在nginx的conf文件中添加上访问index.php vim /usr/local/nginx/conf/nginx.conf 保存退出 再重启一下nginx,就完成了。 ./nginx -s reload...
微信VX多开 免扫码 登录 互斥体 可视化 Exui v1.1 易语言源码附成品软件
UI设计: 1. EXUI界面库20240204 调用的模块: 1. wow64_hook_3.02.ec(压缩包内含) 2. 精易模块[v11.1.0].ec(自行下载) 更新日志: v1.1 2024年7月25日13:28:43 { 1. 有人反馈 设置了V…...
JavaEE 从入门到精通(一) ~ Maven
晚上好,愿这深深的夜色给你带来安宁,让温馨的夜晚抚平你一天的疲惫,美好的梦想在这个寂静的夜晚悄悄成长。 目录 前言 1.1 概念 什么是 Maven? Maven 的核心概念 1.2 maven依赖坐标 1.3 maven仓库 1.4 maven安装 1.5 mave…...
滚珠丝杆与丝杆支撑座:稳定性与精度的双重保障
丝杆支撑座是连接滚珠丝杆与电机的轴承,采用优质的轴承能确保支撑座与滚珠丝杆之间的刚性平衡。那么,滚珠丝杆搭连接杆支撑座有哪些优缺点呢? 正常情况下,丝杆支撑座能够提供稳定的支撑力,确保滚珠丝杆在复杂工况下保持…...
实验5-11 空心的数字金字塔
本题要求实现一个函数,输出n行空心的数字金字塔。 函数接口定义: void hollowPyramid( int n );其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行空心的数字金字塔,请注意,最后一行的…...
C#对象和类型
属性、方法、字段 字段和属性的区别 在C#中,字段(fields)和属性(properties)都是类的成员,它们提供了类存储数据的方式,但它们在用途和功能上有着明显的区别。 字段 字段通常用来存储类…...
免费分享一套SpringBoot+Vue图书(图书借阅)管理系统【论文+源码+SQL脚本】,帅呆了~~
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue图书(图书借阅)管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue图书(图书借阅)管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 本论文阐述了一套先进的图书管理系…...
数据结构与算法--队列
文章目录 提要队列的定义队列的认识队列的应用队列的抽象数据类型队列的存储结构队列的链式存储结构与实现链队的进队和出队操作链队的数据类型初始化链队列入队操作出队操作队列的顺序存储结构与实现顺序队列的假溢出问题队列上溢循环队列循环队列取下一相邻单元下标运算队满与…...
<Qt> 常用控件
目录 一、控件概述 二、QWidget 核心属性 (一)QWidget的核心属性概览 1. enabled 2. geometry 3. WindowFrame的影响 4. windowTitle 5. window Icon 6. windowOpacity 7. cursor 8. font 9. toolTip 10. focusPolicy 11. styleSheet 三、…...
关于C/C++的编译、构建、CMake、x86_amd64等问题(自用)
被这些玩意整红温了 编译器版本 x86:编译器为x86版本,输出文件为x86。amd64_x86:编译器为amd64版本,输出文件为x86。amd64:编译器为amd64版本,输出文件为amd64。x86_amd64:编译器为x86版本&am…...
【设计模式】工厂模式详解
1.简介 工厂模式是一种创建型设计模式,通过提供一个接口或抽象类来创建对象,而不是直接实例化对象。工厂模式的主要思想是将对象的创建与使用分离,使得创建对象的过程更加灵活和可扩展。 工厂模式主要包括以下角色: 抽象工厂&a…...
【Spring Boot】用 Spring Security 实现后台登录及权限认证功能
用 Spring Security 实现后台登录及权限认证功能 1.引入依赖2.创建权限开放的页面3.创建需要权限验证的页面4.配置 Spring Security4.1 配置 Spring MVC4.2 配置 Spring Security 5.创建登录页面6.测试权限 1.引入依赖 使用前需要引入相关依赖,见以下代码ÿ…...
PHP开发【石头剪刀布小游戏】
石头剪刀布小游戏 玩法超级简单,你只需要在下面选择石头、剪刀或者布,然后提交,系统就会随机生成电脑的选择,告诉你最终的结果哦! 游戏规则: 如果你的选择和电脑一样,那么就是平局。如果你赢…...
(leetcode学习)42. 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…...
AI语音智能体赋能12345热线,实现政务服务数智化
12345政务服务便民热线作为连接政府与群众的“连心桥”,承载着政策咨询、诉求举报、民生求助等核心职能,是政务服务的重要窗口。但随着民生需求日益多元,传统12345热线逐渐面临话务高峰拥堵、人工座席压力大、响应效率不均、诉求闭环不及时等…...
AI背景分离革新性全攻略:ComfyUI-BiRefNet创意工作流零基础上手指南
AI背景分离革新性全攻略:ComfyUI-BiRefNet创意工作流零基础上手指南 【免费下载链接】ComfyUI-BiRefNet-ZHO Better version for BiRefNet in ComfyUI | Both img & video 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BiRefNet-ZHO 在数字创意…...
毕业设计题目100个:面向工程实践的技术选型与实现指南
最近在帮学弟学妹们看毕业设计,发现一个挺普遍的现象:很多同学想法天马行空,但一到动手实现就卡壳,要么技术栈选得五花八门拼不起来,要么代码写得像一锅粥,后期根本没法维护。选题“假大空”、实现“散乱差…...
3步掌握开源卡牌编辑器:批量制作桌游卡牌的终极指南
3步掌握开源卡牌编辑器:批量制作桌游卡牌的终极指南 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca/CardEd…...
FLUX小红书V2模型版本对比:V1与V2的核心改进与效果差异
FLUX小红书V2模型版本对比:V1与V2的核心改进与效果差异 1. 引言 如果你最近在玩AI图像生成,特别是想做出那种看起来特别真实、特别有小红书风格的照片,那你肯定听说过FLUX小红书模型。这个模型从V1版本开始就挺火的,主要是因为它…...
NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答
NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答 1. 快速了解NaViL-9B NaViL-9B是由专业研究机构开发的原生多模态大语言模型,它不仅能像普通AI那样进行文字对话,还能看懂图片内容。想象一下,你上传一张…...
快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集
快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集 1. 环境准备与快速部署 1.1 激活Paddle3D环境 首先需要确保已经创建并激活了Paddle3D的conda环境: conda activate paddle3d_env如果尚未创建该环境,建议先安装M…...
3D Face HRN在影视特效中的应用:快速制作数字替身面部模型
3D Face HRN在影视特效中的应用:快速制作数字替身面部模型 1. 引言:数字替身制作的技术革命 在影视特效制作中,数字替身的创建一直是一项耗时且昂贵的工作。传统方法需要演员进行复杂的3D扫描,使用昂贵的设备在专业工作室中完成…...
RestTemplate超时配置实战:三种工厂模式详解与应用场景
1. RestTemplate超时配置的重要性与核心概念 在分布式系统和微服务架构中,远程调用是最常见的操作之一。作为Spring框架中的HTTP客户端工具,RestTemplate因其简洁易用的特性被广泛采用。但在实际生产环境中,我发现很多开发者容易忽视一个关键…...
【ArUco GridBoard实战】从精度瓶颈到优化检测的完整指南
1. ArUco GridBoard的精度瓶颈与优化思路 在实际的计算机视觉项目中,我们经常会遇到标定板尺寸受限的情况。比如我之前做的一个工业检测项目,标定板尺寸被限制在3cm2cm以内。最初使用的是Charuco标定板,但很快就发现了一个严重问题࿱…...
