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/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.mzph.cn/bicheng/3902.shtml

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

相关文章

修改k8s kube-proxy转发为ipvs

查看kube-proxy目前使用的转发模式 a. 通过查看kube-proxy Pod日志来确定 [rootk8s-master ~]# kubectl -n kube-system get pod -o wide | grep kube-proxy kube-proxy-bt2lf 1/1 Running 0 3m26s 192.168.44.148 k8s-master <no…

利用blob对象于浏览器保存图片到本地

本文提供一种保存图片到本地的实现方法&#xff08;PCH5都可以&#xff09; 前置知识&#xff1a; 简介&#xff1a;Blob对象是一个表示大量不可变原始数据的容器。它主要用于处理二进制数据&#xff0c;如图片、音频、视频等文件。Blob 对象可以用于存储和操作大型数据集&…

SpringCloud系列(18)--将服务提供者Provider注册进Consul

前言&#xff1a;在上一章节中我们把服务消费者Consumer注册进了Zookeeper&#xff0c;并且成功通过服务消费者Consumer调用了服务提供者Provider&#xff0c;而本章节则是关于如何将服务提供者Provider注册进Consul里 准备环境&#xff1a; 先安装Consul&#xff0c;如果没有…

linux安装PyCharm

安装PyCharm PyCharm是一个流行的Python开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains提供。有两个版本&#xff1a;社区版&#xff08;免费&#xff09;和专业版&#xff08;付费&#xff09;。以下是安装社区版的方法&#xff1a; 使用snap包安装&#xff08…

ElasticSearch语句中must,must_not,should 组合关系

前言&#xff1a; 在实际应用中&#xff0c;发现当bool中同时使用must和should 没有达到想要的想过&#xff0c;而是只展示了must中的命中数据&#xff0c;所以打算探究一下bool中 三种逻辑关系的组合。 上述查询语句只展示了must的结果&#xff0c;没有should中的结果&#…

yolov8旋转目标检测输出的角度转化为适合机械爪抓取的角度

1. 机械爪抓取时旋转的角度定义 以X轴正方向&#xff08;右&#xff09;为零度方向&#xff0c;角度取值范围[-90&#xff0c;90)。 确认角度的方法&#xff1a; 逆时针旋转X轴&#xff0c;X轴碰到矩形框长边时旋转过的角度记为angleX&#xff1a; 1.如果angleX小于90&#xf…

RDD编程初级实践

参考链接 spark入门实战系列--8MLlib spark 实战_mob6454cc68310b的技术博客_51CTO博客https://blog.51cto.com/u_16099212/7454034 Spark和Hadoop的安装-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/138021948?spm1001.2014.3001.5501 1. spark-shell…

【介绍下如何使用CocoaPods】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Linux:服务器间同步文件的脚本(实用)

一、功能描述 比如有三台服务器&#xff0c;hadoop102、hadoop103、hadoop104&#xff0c;且都有atguigu账号 循环复制文件到所有节点的相同目录下&#xff0c;且脚本可以在任何路径下使用 二、脚本实现 1、查看环境变量 echo $PATH2、进入/home/atguigu/bin目录 在该目录下…

Redis 源码学习记录:字符串

redisObject Redis 中的数据对象 server/redisObject.h 是 Redis 对内部存储的数据定义的抽象类型其定义如下&#xff1a; typedef struct redisObject {unsigned type:4; // 数据类型&#xff0c;字符串&#xff0c;哈希表&#xff0c;列表等等unsigned encoding:4; …

文字PDF转图片PDF,适合pdf防复制

完整代码已传至github平台&#xff1a; https://github.com/yaunsine/text_pdf_to_image_pdf 分成两步操作&#xff1a; 1、将文字pdf输出成图片 2、将所有图片合成为pdf 将PDF文件输出为图片的形式 """pdf转图片 """ def pyMuPDF_fitz(pdfPa…

网页提示语闪太快的定位问题(selenium)

selenium UI自动化时&#xff0c;提示语闪太快&#xff0c;导致无法获取元素的问题 解决办法 步骤一&#xff1a; F12---》控制台输入debugger 步骤二&#xff1a;对于需要定位的部分&#xff0c;在控制台的debugger处回车&#xff0c;可以定住页面 步骤三&#xff1a;正常定…

Impala系统架构理解

1 impalad&#xff08;含3个模块&#xff0c;执行hbase或hdfs中的数据&#xff0c;数据的底层存储为hdfs&#xff09; 当用户通过用户接口提出查询或分析请求时&#xff0c;Impala会选择一个Impalad实例作为协调者&#xff08;Coordinator&#xff09;来负责整个查询过程的协调…

Android NDK开发 CMAKE 相关总结

预设变量含义介绍 工程结构组织&#xff1a; 代码目录 ├── CMakeLists.txt ├── a │ ├── CMakeLists.txt │ └── a.cpp └── b├── CMakeLists.txt├── b.cpp└── b.h路径相关&#xff1a; CMAKE_SOURCE_DIR&#xff1a;最顶层 CMakceLists.txt 所在…

【Python快速上手(六)】

目录 Python快速上手&#xff08;六&#xff09;Python3 列表和元组Python3 列表1.创建列表2.访问列表元素3.列表切片4.修改列表元素5.列表方法6.列表操作符注意事项 Python3 元组1.创建元组2.访问元组元素3.元组切片4.元组内置函数5.元组运算符注意事项 Python快速上手&#x…

【CTF Web】CTFShow web14 Writeup(PHP+switch case 穿透+SQL注入+文件读取)

web14 5 解法 <?php include("secret.php");if(isset($_GET[c])){$c intval($_GET[c]);sleep($c);switch ($c) {case 1:echo $url;break;case 2:echo A;break;case 555555:echo $url;case 44444:echo "A";break;case 3333:echo $url;break;case 222…

python网络爬虫爬取需要的数据

要爬取网站的数据&#xff0c;你可以使用 Python 的 requests 库来发送 HTTP 请求&#xff0c;并使用 BeautifulSoup 库来解析返回的 HTML 内容。但是&#xff0c;在此之前&#xff0c;你需要检查该网站的 robots.txt 文件&#xff0c;以确认是否允许爬虫抓取特定页面的数据。 …

win11 安装qt5.14.2 、qtcreator、vs编译器 。用最小安装进行 c++开发qt界面

系统 &#xff1a;win11 一、安装vs生成工具 &#xff0c;安装编译器 下载visualstudio tools 生成工具&#xff1a; 安装编译器 和 windows sdk&#xff1a; 安装debug 调试器&#xff1a; 二、Qt5.14.2下载 下载链接: Index of /archive/qt/5.14/5.14.2 安装qt 三、配置QT/…

ChuanhuChatGPT集成百川大模型

搭建步骤&#xff1a; 拷贝本地模型&#xff0c;把下载好的Baichuan2-7B-Chat拷贝到models目录下 修改modules\models\base_model.py文件&#xff0c;class ModelType增加Baichuan Baichuan 16 elif "baichuan" in model_name_lower: model_type ModelType.Ba…

短视频矩阵营销系统 poihuoqu 任意文件读取漏洞复现

0x01 产品简介 短视频矩阵营销系统是由北京华益云数据科技有限公司开发的一款产品,这家公司专注于抖音短视频矩阵营销系统的研发,致力于为企业提供全方位的短视频营销解决方案。华益云抖销短视频矩阵系统可以帮助企业快速搭建多个短视频账号,实现内容的批量制作和发布,提高…