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

news/2024/9/25 19:18:10/

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/255img_gray[i,j]=0else: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.ppmy.cn/news/1450878.html

相关文章

使用Gradio搭建聊天UI实现质谱AI智能问答

使用Gradio搭建聊天UI实现质谱AI智能问答 一、调用智谱 AI API二、使用Gradio搭建聊天UI三、将流式处理添加到交互式聊天机器人 一、调用智谱 AI API 1、获取api_key 智谱AI开放平台网址&#xff1a; https://open.bigmodel.cn/overview 2、安装库pip install zhipuai 3、执…

vue中如何正确使用异步async和await

async 是异步的意思&#xff0c;而 await 是等待的意思&#xff0c;await 用于等待一个异步任务执行完成的结果。 1.async/await 是一种编写异步代码的新方法&#xff08;以前是采用回调和 promise&#xff09;。 2. async/await 是建立在 promise 的基础上。 3. async/await 像…

Python中如何调用其他文件的类或函数

Python中如何调用其他文件的类或函数 在Python编程中&#xff0c;随着项目的扩大&#xff0c;代码通常会被分解为多个模块&#xff0c;以提高可读性和可维护性。模块通常是包含Python定义和声明的文件。了解如何从一个文件调用另一个文件中的类或函数是非常重要的&#xff0c;…

Electron打包流程

安装 先安装依赖 apt-get update apt-get install -y wine dpkg fakeroot rpm mono-complete dpkg -add-architecture i386 && apt-get update apt-get install -y win32 rm -rf /var/lib/apt/lists/* 安装electron npm install --save-dev electron --registry ht…

Vue Canvas图片水印的绘制 图片加水印

效果 定义画布 <canvas width"800" height"800" ref"cn" ></canvas>绘制水印 draw(){const img new Image()img.srchttps://img1.baidu.com/it/u3035183739,1826404114&fm253&fmtauto&app138&fJPEGimg.onload(()…

CSS 伪类、伪元素的应用实例:电池充电、高能进度条

一、目的 本文通过 CSS 伪类、伪元素&#xff0c;结合动画 animation 和 Vue 动态样式属性&#xff08;通过 CSS 变量&#xff09;的写法&#xff0c;来实现电池充电、高能进度条的效果&#xff0c;如下图所示。 二、基础知识 1、CSS 伪类、伪元素 简单概括成以下 4 点&#x…

ZooKeeper知识点总结及分布式锁实现

最初接触ZooKeeper是之前的一个公司的微服务项目中&#xff0c;涉及到Dubbo和ZooKeeper&#xff0c;ZooKeeper作为微服务的注册和配置中心。好了&#xff0c;开始介绍ZooKeeper了。 目录 1.ZooKeeper的基本概念 2.ZooKeeper的节点&#xff08;ZNode&#xff09; 3. ZooKeep…

Verilog学习之时序控制、语句块(1)

推荐Verilog学习网址&#xff1a; HDLbits EDAPlayground 菜鸟教程 因为自己以前学过Verilog&#xff0c;现在要重新捡起来&#xff0c;所以就记录了一下不熟悉的部分。 时序控制 代码来自菜鸟教程4.3 Verilog 时序控制 | 菜鸟教程 1.时延控制 常规时延 #10 value1 v…