Python之Opencv教程(1):读取图片、图片灰度处理

news2024/11/27 0:49:28

1、Opencv简介

OpenCV(Open Source Computer Vision Library)是一个用于计算机视觉和图像处理的开源库,提供了丰富的图像处理、计算机视觉和机器学习功能。它支持多种编程语言,包括C++、Python、Java等,广泛应用于图像处理、目标检测、人脸识别、图像分割、运动跟踪等领域。

2、Opencv安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

在这里插入图片描述

3、Opencv功能1:图像读取和显示

3.1 代码

import cv2

# 读取图片,路径中不能有中文
img = cv2.imread("images/KD.jpg")
# 显示图片
cv2.imshow('KD7777777', img)
# 等待键盘输入,单位毫秒,传入0表示永久等待
cv2.waitKey(0)
# OpenCV底层是C++编写的,需要释放内存
cv2.destroyAllWindows()

3.2 效果

在这里插入图片描述

4、Opencv功能2:图像灰度

4.1 为什么要进行图片灰度

在OpenCV中,将彩色图像转换为灰度图像是常见的图像处理操作之一。灰度图像是指每个像素点只有一个通道,用于表示图像的亮度或灰度级别,而不包含彩色信息。灰度图像通常用于简化图像处理和计算,减少数据量,同时保留了图像的重要信息。

灰度图像的作用包括:

  1. 简化图像:将彩色图像转换为灰度图像可以简化图像数据,减少存储空间和处理复杂度。
  2. 提取图像亮度信息:灰度图像反映了图像中的亮度分布,有助于分析和处理图像的光照条件。
  3. 增强图像对比度:灰度图像可以通过调整对比度和亮度来增强图像的视觉效果。

辅助图像处理:许多图像处理算法和技术(如边缘检测、图像分割等)在灰度图像上更容易实现和应用,因为灰度图像只有一个通道。

4.2 代码

import cv2

# 读取原始图片
src = cv2.imread("images/girl.jpg")
# 展示原始图片
cv2.imshow("KD", src)
# 进行图片灰度
gray_img = cv2.cvtColor(src, code=cv2.COLOR_BGR2GRAY)
# 展示灰度图片
cv2.imshow("KD_GRAY", gray_img)
# 设置灰度图片一直显示
cv2.waitKey(0)
# 释放内存
cv2.destroyAllWindows()
# 保存灰度图片
cv2.imwrite("images/girl_GRAY.jpg", gray_img)

4.3 效果

图片灰度之后的效果
在这里插入图片描述

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

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

相关文章

Unity 学习日记 13.地形系统

下载源码 UnityPackage 1.地形对象Terrain 目录 1.地形对象Terrain 2.设置地形纹理 3.拔高地形地貌 4. 绘制树和草 5.为地形加入水 6.加入角色并跑步 7.加入水声 右键创建3D地形: 依次对应下面的按钮 || 2.设置地形纹理 下载资源包 下载资源包后&#x…

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速,网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…

OSPF基本原理和概念

文章目录 背景知识OSPF协议概述:OSPF区域的表示OSPF 骨干区域 –区域0OSPF 非骨干区域 -非0区域OSPF的五种区域类型OSPF工作原理OSPF 的报文类型OSPF邻居表中的七个状态 总结 背景知识 一台路由设备如何获取其他网段的路由,并加入到路由表中 直连路由 …

【Java】LinkedList模拟实现

目录 整体框架IMyLinkedList接口IndexNotLegalException异常类MyLinkedList类成员变量(节点信息)addFirst(头插)addLast(尾插)在指定位置插入数据判断是否存在移除第一个相等的节点移除所有相等的节点链表的长度打印链表释放回收链表 整体框架 IMyLinkedList接口 这个接口用来…

IDE/VS2015和VS2017帮助文档MSDN安装和使用

文章目录 概述VS2015MSDN离线安装离线MSDN的下载离线MSDN安装 MSDN使用方法从VS内F1启动直接启动帮助程序跳转到了Qt的帮助网页 VS2017在线安装MSDN有些函数在本地MSDN没有帮助?切换中英文在线帮助文档 概述 本文主要介绍了VS集成开发环境中,帮助文档MS…

常关型p-GaN栅AlGaN/GaN HEMT作为片上电容器的建模与分析

来源:Modeling and Analysis of Normally-OFF p-GaN Gate AlGaN/GaN HEMT as an ON-Chip Capacitor(TED 20年) 摘要 提出了一种精确基于物理的解析模型,用于描述p-GaN栅AlGaN/GaN高电子迁移率晶体管(HEMT&#xff09…

初步了解C++

目录 一:什么是C? 二.C发展史 三:C关键字 四:命名空间 4.1命名空间的介绍 4.2命名空间的使用 4.3命名空间的使用 4.3.1使用作用域限定符 4.3.2 使用using将命名空间的某个成员引入 4.3.3使用using把整个命名空间展开 4.4命名空…

Golang生成UUID

安装依赖 go get -u github.com/google/uuid文档 谷歌UUID文档 示例 函数签名func NewV7() ( UUID ,错误) func (receiver *basicUtils) GenerateUUID() uuid.UUID {return uuid.Must(uuid.NewV7()) } uid : GenerateUUID()

鸿蒙ARKTS--简易的购物网站

目录 一、media 二、string.json文件 三、pages 3.1 登录页面:gouwuPage.ets 3.2 PageResource.ets 3.3 商品页面:shangpinPage.ets 3.4 我的页面:wodePage.ets 3.5 注册页面:zhucePage.ets 3. 购物网站主页面:gwPage.ets 一、media 图片位置:entry > src …

cron服务

Cron文件:Cron服务使用一个特定的配置文件来存储任务和其执行计划。在Unix系统上,这个文件通常是 /etc/crontab, 或者是位于/etc/cron.d/目录下的其他文件。 这些文件包含了任务的定义,包括执行时间和要执行的命令。 类似于 编…

刷爆LeetCode:两数之和 【1/1000 第一题】

👤作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 作者专栏每日更新:LeetCode解锁1000题: 打怪升级之旅https://blog.csdn.net/cciehl/category…

Scala介绍与环境搭建

Scala环境搭建与介绍 一、Scala环境搭建 1、环境准备与下载 2、验证Scala 3、IDEA新建项目,配置Scala,运行Hello world 二、Scala介绍 1、Scala 简介 2、Scala 概述 一、Scala环境搭建 1、环境准备与下载 JDK1.8 Java Downloads | Oracle 下载需求版本…

java项目通用Dockerfile

创建Dockerfile文件,放到项目根目录下和pom.xml同级别 仅需修改为自己项目端口号即可,其他的无需改动 FROM openjdk:11.0.11-jre-slimCOPY target/*.jar .EXPOSE 8080ENTRYPOINT java -jar *.jar构建语句(注意末尾的点 . ) docker build -t container…

element-ui inputNumber 组件源码分享

今日简单分享 inputNumber 组件的实现原理,主要从以下四个方面来分享: 1、inputNumber 组件的页面结构 2、inputNumber 组件的属性 3、inputNumber 组件的事件 4、inputNumber 组件的方法 一、inputNumber 组件的页面结构。 二、inputNumber 组件的…

ElasticSearch开发指北和场景题分析

前言 本篇是ES系列的第二篇,继上次的理论篇ElasticSearch理论体系构建后,带来了实战篇。实战篇来自于我对常见操作以及场景的分析总结,详细到每个步骤和理由,下一篇将是性能优化篇。 常用操作 以下操作均使用ES的API进行展示&a…

数据结构进阶篇 之 【二叉树顺序存储(堆)】的整体实现讲解(赋完整实现代码)

做人要谦虚,多听听别人的意见,然后记录下来,看看谁对你有意见 一、二叉树的顺序(堆)结构及实现 1.二叉树的顺序结构 2.堆的概念及结构 3.堆的实现 3.1 向下调整算法 AdJustDown 3.2 向上调整算法 AdJustUP 3.3 …

【系统架构师】-第18章-安全架构设计

(1)信息泄露:信息被泄露或透露给某个非授权的实体。 (2)破坏信息的完整性:数据被非授权地进行增删、修改或破坏而受到损失。 (3)拒绝服务:对信息或其他资源的合法访问被无条件地阻止。 (4)非法使用(非授权访问):某一资源被某个非授权的人或…

深度学习500问——Chapter05: 卷积神经网络(CNN)(2)

文章目录 5.6 有哪些池化方法 5.7 1x1卷积作用 5.8 卷积层和池化层有什么区别 5.9 卷积核是否一定越大越好 5.10 每层卷积是否只能用一种尺寸的卷积核 5.11 怎样才能减少卷积层参数量 5.12 在进行卷积操作时,必须同时考虑通道和区域吗 5.13 采用宽卷积的好处有什么 …

Linux部署Sonarqube+Gogs+Jenkins(一)

Linux部署SonarqubeGogsJenkins 一、1.Linux安装JDK11环境1. 本地进行上传2. 进入到/usr/java目录,并且进行解压3. 配置文件/etc/profile,配置环境变量4.让对应的配置文件生效5. 验证 二、Linux安装Python环境三、Linux安装Jenkins环境1、/usr目录下创建…

Redis 的慢日志

Redis 的慢日志 Redis 的慢日志(Slow Log)是用于记录执行时间超过预设阈值的命令请求的系统。慢日志可以帮助运维人员和开发人员识别潜在的性能瓶颈,定位那些可能导致 Redis 性能下降或响应延迟的慢查询。以下是 Redis 慢日志的相关细节&…