python使用opencv对图像的基本操作(2)

13.对多个像素点进行操作,使用数组切片方式访问

img[i,:] = img[j,:]
#将第j行的数值赋值给第i行
img[-2,:]或img[-2]
#倒数第二行
img[:,-1]
#最后一列
img[50:100,50:100]
#50-100行,50-100列(不包括第100行和第100列)
img[:100,:50].sum()
#计算前100行、前50列所有的数值的和
img[i].mean()
#第i行所有数值的平均值

对多个像素点进行操作,特别是图像处理领域,使用数组切片方式访问是一种非常高效的方法。数组切片允许开发者通过简单的语法获取数组中的一段连续元素,这些元素可以是一个像素点的颜色信息,例如在RGB图像中,一个像素点由红、绿、蓝三个颜色通道的值组成。
运行结果:

14.将图片进行二值化

二值化:是图像分割的一种最简单的方法。二值化可以把灰度图像转换成二值图像。把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化。

from skimage import io,data,color
img = io.imread('lbxx.jpg')
img_gray=color.rgb2gray(img)    #将RGB图像转换为灰度图像
rows,cols=img_gray.shape
for i in range(rows):
    for j in range(cols):
        if (img_gray[i,j]<=0.5):  #128/255
            img_gray[i,j]=0
        else:
            img_gray[i,j]=1
io.imshow(img_gray)

运行结果:
在这里插入图片描述
注:color.rgb2gray: 这是 Scikit-image 库中 color 模块的一个函数,用于将RGB彩色图像转换为灰度图像。灰度图像是单通道的,每个像素的值代表该点的亮度,范围通常是0到1,其中0表示黑色,1表示白色,0.5表示灰色。

15.将图片进行归一化

归一化:图像归一化是指对图像进行了一系列标准的处理变换,使图像变换为一个固定标准形式的过程。

from skimage import exposure, io
# 读取图像
image = io.imread('lbxx.jpg')
# 归一化处理
normalized_image = exposure.rescale_intensity(image, in_range='image', out_range=(0, 0.4))
io.imshow(normalized_image)
io.show()

运行结果:
在这里插入图片描述
在这里插入图片描述
注:图片归一化是图像处理中的一种常见技术,它将图像的像素值映射到一个特定的范围,通常是[0, 1]或[-1, 1]。

15.1线性归一化

定义:是一种常见的数据预处理方法,也被称为 Min-Max 归一化。 它通过对原始数据进行线性变换,将其缩放到特定的范围内,常用的是将数据缩放到 [0, 1] 或 [-1, 1] 范围内。

image = io.imread('1.jpg')
normalized_image = (image - np.min(image)) / (np.max(image) - np.min(image))
io.imshow(normalized_image)

运行结果:
在这里插入图片描述
注:
线性归一化到[0, 1]区间:
normalized_image = (image - min_val) / (max_val - min_val)
线性归一化到[-1, 1]区间:
normalized_image = 2 * (image - min_val) / (max_val - min_val) - 1

15.2均值方差归一化:

将图像的像素值减去均值后,除以标准差,使得图像的均值为0,标准差为1。这样可以降低图像数据的偏差和差异性。

import numpy as np
# image为array类型,多少维度都无所谓,直接操作全部元素
image2 = (image - np.min(image)) / (np.max(image) - np.min(image))
io.imshow(image2)

运行结果:
在这里插入图片描述

15.3直方图均值化

通过重新分布图像像素的直方图,增强图像的对比度和细节。这在图像增强和图像识别等领域非常有用。

from skimage import exposure
equalized_image = exposure.equalize_hist(image)
io.imshow(equalized_image)

运行结果:

在这里插入图片描述

15.4.改变通道颜色

from skimage import io,data
img=io.imread('lbxx.jpg')
a = img[:,:,0] >170
img[a] = [0, 255, 0] #红色
io.imshow(img)

注:这段代码的作用是将图像中红色通道值大于170的像素染成绿色,并显示结果。
运行结果:
在这里插入图片描述

from skimage import io,data
img=io.imread('lbxx.jpg')
a = img[:,:,1] >170
img[a] = [0, 255, 0] #绿色
io.imshow(img)

运行结果:
在这里插入图片描述

from skimage import io,data
img=io.imread('lbxx.jpg')
a = img[:,:,2] >170
img[a] = [0, 0, 255] #蓝色
io.imshow(img)

运行结果:
在这里插入图片描述

16.图像数据类型及转换

在这里插入图片描述

16.1.查看数据类型

from skimage import io,data
img=io.imread('lbxx.jpg')
print(img.dtype.name)

注:print(img.dtype.name)这行代码打印出图像数组的数据类型,type.name则给出了这个数据类型的字符串表示;uint8,表示数组中的每个元素都是一个8位的无符号整数,取值范围从0到255。
运行结果:

在这里插入图片描述

16.2unit8转float

from skimage import io,data,img_as_float
import numpy as np
img=io.imread('lbxx.jpg')
print(img)
print(img.dtype.name)
dst=img_as_float(img)
print(dst.dtype.name)
print(dst)

注:dst=img_as_float(img)这行代码将图像转换为浮点数表示。这意味着图像中的每个像素值将被转换为0.0到1.0之间的浮点数。

运行结果:
在这里插入图片描述

16.3.float转uint8

from skimage import img_as_ubyte
import numpy as np
img = np.array([0, 0.5, 1], dtype=float)
print(img.dtype.name)
dst=img_as_ubyte(img)
print(dst.dtype.name)
print(dst)

注:img = np.array([0, 0.5, 1], dtype=float)这行代码创建一个包含三个浮点数的一维数组,这三个数分别是0, 0.5, 和1。数组的类型被指定为float。
运行结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么用PHP语言实现远程控制电器

怎么用PHP语言实现远程控制电器呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制电器&#xff0c;通过控制电器的电源线路来实现电器控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能WiFi通断器AC3统…

Ubuntu16.04搭建webrtc服务器

本人查阅无数资料,历时3周搭建成功 一、服务器组成 AppRTC 房间+Web服务器 https://github.com/webrtc/apprtcCollider 信令服务器,在AppRTC源码里CoTurn coturn打洞+中继服务器 Nginx 服务器,用于Web访问代理和Websocket代理。AppRTC 房间+Web服务器使用python+js语言 App…

Elcomsoft iOS Forensics Toolkit: iPhone/iPad/iPod 设备取证工具包

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作&#xff0c;对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制作镜像&#xff0c;提取设备机密&#xff08…

【机器学习】集成学习:强化机器学习模型与创新能的利器

集成学习&#xff1a;强化机器学习模型预测性能的利器 一、集成学习的核心思想二、常用集成学习方法Bagging方法Boosting方法Stacking方法 三、集成学习代表模型与实现四、总结与展望 在大数据时代的浪潮下&#xff0c;机器学习模型的应用越来越广泛&#xff0c;而集成学习作为…

Centos7 yum报错 Could not resolve host: mirrorlist.centos.org

yum install报如下错误 应该是网络问题&#xff0c;检查是不是这个文件配置错了导致连不上网 /etc/sysconfig/network-scripts/ifcfg-ens33 注意里面的DNS配置 可以在服务器ping一下百度 ping wwww.baidu.com

QX2303L50F输入电压0.7V~5V输出电压5V非同步DCDC最大输出电流800mA

前言 外围较简单&#xff0c;价格较低&#xff0c;小电流输出时&#xff0c;最低启动电压0.8V 输出电压有多种&#xff0c;封装有多种 参考价格约0.2元 QX2303典型应用电路图 QX2303封装 QX2303丝印 1.概述 QX2303 系列产品是一种高效率、低纹波、工作频率高的 PFM 升压 DC-…

战胜DALL·E 3和 Midjourney的开源模型来了——playground-v2.5

这是首次超越闭源AI模型的开源时刻。Playground AI 前不久宣布Playground v2.5正式开源。Playground v2.5 是美学质量方面最先进的开源模型&#xff0c;特别关注增强的颜色和对比度、改进的多纵横比生成以及改进的以人为中心的精细细节。并且在美学质量方面树立了新标准&#x…

从单按键状态机思维扫描引申到4*4矩阵按键全键无冲扫描,一步一步教,超好理解,超好复现(STM32程序例子HAL库)

目前大部分代码存在的问题 ​ 单次只能对单个按键产生反应&#xff1b;多个按键按下就难以修改&#xff1b;并且代码耦合度较高&#xff0c;逻辑难以修改&#xff0c;对于添加长按&#xff0c;短按&#xff0c;双击的需求修改困难。 解决 16个按键按下无冲&#xff0c;并且代…

AIGC技术带来的安全与隐私问题探讨

如何看待AIGC技术&#xff1f; 简介&#xff1a;探讨AIGC技术的发展现状和未来趋势。提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 方向一&#xff1a;技术应用 机遇和挑战 AIGC国内场景应用图谱 方向二&#xff1a;伦理与风险 垄断与隐私风险 AI民主化诉…

Linux--MyMiniTry--Vim

首先下载好vim,我们可以按以下的方式进行光标的移动&#xff08;也可以回车进行换行&#xff09; &#xff08;--> 进入教程&#xff09; &#xff08;初始的时候没有文本&#xff0c;你怎么按都没有用&#xff09; &#xff08;我们要先按 i &#xff0c;进行插入文本才…

前端单元测试的艺术:专业化策略与Vue项目高效实践指南

单元测试是软件开发中的基石&#xff0c;尤其对于前端领域&#xff0c;它为保证代码质量、提升开发效率、强化项目稳定性提供了不可或缺的支持。本文将深入剖析单元测试的核心理念&#xff0c;揭示其在前端开发中的独特价值&#xff0c;并提炼出一套专业且高效的实践策略&#…

全志ARM-官方库SDK安装和验证

进入界面&#xff0c;输入以下指令 git clone https://github.com/orangepi-xunlong/wiringOP //下载源码 cd wiringOP //进入文件夹 sudo ./build clean //清除编译信息 sudo ./build …

电容的理论基础

目录 1.电容的本质&#xff1a; 2.电容量的大小 2.1电容的单位 2.2电容的决定式 ​编辑3.电容的特点 5.电容器的类型 6.电容实际的电路模型 7.安装方法 ​编辑8.电容值 9.电容的耐压、封装 10.阻抗-频率特性 11.频率特性 12.等效串联电组ESR 13.电容器的温度特性…

[C++基础学习]----03-程序流程结构之选择结构详解

前言 本篇都是在自学C基础知识的基础上&#xff0c;加上本身理解所完成的&#xff0c;为了便于记录学习情况&#xff0c;使用更加容易理解的话术描述出来&#xff0c;方便使用。 在C程序中&#xff0c;选择结构&#xff08;也称为条件结构&#xff09;用于根据特定的条件执行不…

python 使用flask_httpauth和pyjwt实现登录权限控制

最近需要用到&#xff0c;学习了一下记录 首先安装依赖 pip install Flask-HTTPAuth pyjwt passlib Welcome to Flask-HTTPAuth’s documentation! — Flask-HTTPAuth documentation Welcome to PyJWT — PyJWT 2.8.0 documentation Passlib 1.7.4 documentation — Passl…

Unity类银河恶魔城学习记录15-1,2 p153 Audio Manager p154 Audio distance limiter

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili AudioManager.cs using System.Collections; using System.Collections.Gen…

Grafana 系列|Grafana 监控 TDengine集群

Grafana 监控 TDengine集群有两种方式&#xff1a; 一、 taosKeeper监控 TDengine 通过 taosKeeper 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度等信息定时写入指定数据库。TDengine 还将重要的系统操作&#xff08;比如登录、创建、删除数据库等&#xff0…

OpenHarmony语言基础类库【@ohos.util.HashSet (非线性容器HashSet)】

HashSet基于[HashMap]实现。在HashSet中&#xff0c;只对value对象进行处理。 HashSet和[TreeSet]相比&#xff0c;HashSet中的数据无序存放&#xff0c;即存放元素的顺序和取出的顺序不一致&#xff0c;而TreeSet是有序存放。它们集合中的元素都不允许重复&#xff0c;但Hash…

八国语言50种海外电子游戏源码 海外游戏开发BTC虚拟币支付 外国电子游艺 游戏源码交易平台 搭建教程

全新海外版的游戏竞猜玩法带搭建教程 系统支持八国语言&#xff0c;50种游戏&#xff0c;支持 Paypal、人工充值、BTC多种支付 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89105597 更多资源下载&#xff1a;关注我。

WEB攻防-PHP特性-CMS审计实例

前置知识&#xff1a;PHP函数缺陷 测试环境&#xff1a;MetInfo CMS 函数缺陷导致的任意文件读取 漏洞URL&#xff1a;/include/thumb.php?dir 漏洞文件位置&#xff1a;MetInfo6.0.0\app\system\include\module\old_thumb.class.php <?phpdefined(IN_MET) or exit(No…
最新文章