图像处理(二)

图像处理(2)

  • 裁剪图片

from skimage import io,data

iimg = io.imread(r'D:\工坊\图像处理\十个勤天2.png')

roi=iimg[50:150,120:200,:]

io.imshow(roi)

运行结果:

  • 将图片进行二值化

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

img_gray=color.rgb2gray(img)

rows,cols=img_gray.shape

for i in range(rows):

    for j in range(cols):

        if(img_gray[i,j]<=0.5):

            img_gray[i,j]=0

        else:

            img_gray[i,j]=1

io.imshow(img_gray)

运行结果:

  • 图像归一化

        图像归一化是图像处理操作,在将图像的像素值范围缩放到特定的范围或标准化到特定的统计特征。

from skimage import io,data

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

reddish = img[:, :, 0]> 170  #像素值大于170的位置为True,小于为False

img[reddish]=[0, 255, 0]  # [红,绿,蓝]三个通道

io.imshow(img)

print(img.dtype.name)

运行结果:

  •  图像归一化

        图像数据的归一化操作,将像素值线性缩放到指定范围内,加载图像数据,显示图像数据。

import numpy as np

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

normalized_img = (img-np.min(img))/(np.max(img)-np.min(img))

io.imshow(img)

print(img)

运行结果:

  • 查看图片是什么类型的图片(utf-8/float)

from skimage import io,data

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

print(img.dtype.name)

运行代码:

  • 将utf-8的图片转为float(浮点型)

from skimage import data,img_as_float

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

print(img.dtype.name)

print(img)

dst = img_as_float(img)

print(dst.dtype.name)

print(img)

运行结果:

  • 将图片分成三类,用默认颜色对三类进行着色

from skimage import io,data,color

import numpy as np

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

gray = color.rgb2gray(img)

rows,cols = gray.shape

labels = np.zeros([rows,cols])

for i in range(rows):

    for j in range(cols):

        if(gray[i, j]<0.4):

            labels[i, j]=0

        elif(gray[i, j]<0.75):

            labels[i, j]=1

            

        else:

            labels[i, j]=2

dst=color.label2rgb(labels)

io.imshow(dst)

运行结果:

  • 将浮点型(float)转为utf-8

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)

运行结果:

  • 空间颜色的转换(方法一)

① Rgb转为gray

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

gray=color.rgb2gray(img)

io.imshow(gray)

运行结果:

② Rgb转为hsv

        • 什么是hsv:“H”代表色相(Hue)、“S”饱和度(Saturation)和“V”亮度(Value)
from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

hsv=color.rgb2hsv(img)

io.imshow(hsv)

运行结果:

③ Rgb转lab

        • 什么是lab:lab图像格式通常指的是 CIELAB 色彩空间,也称为 Lab 色彩空间。包括三个通道:L(亮度)、a(从绿色到红色的颜色分量)和b(从蓝色到黄色的颜色分量)
from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

lab=color.rgb2lab(img)

io.imshow(lab)

运行结果:

④ Gray转rgb

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

rgb=color.gray2rgb(img)

io.imshow(rgb)

运行结果:

⑤ Hsv转rgb

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

rgb=color.hsv2rgb(img)

io.imshow(rgb)

运行结果:

⑥ lab转rgb

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

rgb=color.lab2rgb(img)

io.imshow(rgb)

运行结果:

  • 空间颜色转换(方法二)

       • 方法一中的转换方式,在这个中只适用于rgb转hsv,其他的使用情况:

tospace` has to be one of dict_keys(['rgb', 'hsv', 'rgb cie', 'xyz', 'yuv', 'yiq', 'ypbpr', 'ycbcr', 'ydbdr'])

rgb转hsv:

from skimage import io,data,color

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")

hsv = color.convert_colorspace(img,'RGB','HSV')

io.imshow(hsv)

运行结果:

  • 创建一个窗口,在窗口中对图片三种变换进行对比

        从skimage库中导入data,从matplotlib.pyplot库中导入plt,使用io.imread函数从指定路径加载名为"十个勤天2.png"的图像创建一个标题为'bocoma a fammer!'且大小为8x8英寸的图像窗口,在一个2x2的子图网格中创建四个子图,为四个子图命名为“fammer.a”、“fammer.b”、“fammer.c”和“fammer.d”,使用plt.show()显示绘图。

from skimage import data

import matplotlib.pyplot as plt

img = io.imread(r"D:\工坊\图像处理\十个勤天2.png")



plt.figure(num='bocoma a fammer!', figsize=(8, 8))

plt.subplot(2, 2, 1)

plt.title('fammer.a')

plt.imshow(img)



plt.subplot(2, 2, 2)

plt.title('fammer.b')

plt.imshow(img[:, :, 0], cmap=plt.cm.gray)



plt.subplot(2, 2, 3)

plt.title('fammer.c')

plt.imshow(img[:, :, 1], cmap=plt.cm.gray)



plt.subplot(2, 2, 4)

plt.title('fammer.d')

plt.imshow(img[:, :, 2], cmap=plt.cm.gray)



plt.show()

运行结果:

  • 查看库中有几张图片

import skimage.io as io

from skimage import data_dir

str=data_dir + '/*.png'

coll = io.ImageCollection(str)

print(len(coll))
  • 查看文件夹中的第二张图片

from skimage import data_dir,io,color

def convert_gray(f):

    rgb=io.imread(f)

    return color.rgb2gray(rgb)

img=r"D:\工坊\图像处理"

str=img+'/*.jpg'

coll = io.ImageCollection(str)

io.imshow(coll[1])

# 自己文件夹里的图片

运行结果:

进行灰度处理:

from skimage import data_dir,io,color

def convert_gray(f):

    rgb=io.imread(f)

    return color.rgb2gray(rgb)

img=r"D:\工坊\图像处理"

str=img+'/*.jpg'

coll = io.ImageCollection(str,load_func=convert_gray)

io.imshow(coll[1])

运行结果:

  • 视频的处理

从一个视频文件中提取帧,并将每一帧保存为图片文件

import cv2

from skimage import io

import os



class AVILoader:

    def __init__(self, video_file):

        self.video_file = video_file

        self.cap = cv2.VideoCapture(self.video_file)



    def __call__(self, frame):

        self.cap.set(cv2.CAP_PROP_POS_FRAMES, frame)

        ret, frame = self.cap.read()

        if ret:

            return cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        else:

            return None

video_file = 'mymymyvideo.mp4'

av_loader = AVILoader(video_file)

frames = range(0, 1000, 10)

output_folder = 'frames'

os.makedirs(output_folder, exist_ok=True)

# 保存每一帧为图像文件

for frame in frames:

    img = av_loader(frame)

    if img is not None:

        filename = os.path.join(output_folder, f'frame_{frame}.jpg')

        io.imsave(filename, img)

        io.imshow(img)  # 显示图像

        io.show()       # 显示图像窗口

# 创建图像集合

ic = io.ImageCollection(os.path.join(output_folder, '*.jpg'))

# 输出图像集合

运行结果:

  • 图片的转换

        把png图片全部转换为256x256的jpg的灰度图保存在文件夹下

from skimage import data_dir,io,transform,color

import numpy as np



def convert_gray(f):

        rgb=io.imread(f) #依次读取rgb图片

        gray=color.rgb2gray(rgb) #将rgb图片转换成灰度图

        dst=transform.resize(gray,(256,256)) #将灰度图片大小转换为256*256

        return dst

img="C:/Users/lenovo/Desktop/sunnn"

str=img+'/*.jpg'

coll = io.ImageCollection(str,load_func=convert_gray)



for i in range(len(coll)):

    io.imsave('C:/Users/lenovo/Desktop/sunnn/'+np.str(i)+'.png',coll[i]) #循环保存图片

运行代码:

运行结果:

 

 如果想要继续学习,请移步下一篇blog!!!

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

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

相关文章

在数据分析中所需要运用到的概率论知识

数据分析 前言一、总体二、样本三、统计抽样抽取的基本准则 四、随机抽样抽签法随机数法 五、分层抽样六、整群抽样七、系统抽样八、统计参数常用的分布函数参数 九、样本统计量十、样本均值和样本方差十一、描述样本集中位置的统计量样本均值样本中位数样本众数 十二、描述样本…

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中&#xff0c;如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac&#xff0c;作为一款全方位的日历管理软件&#xff0c;以其独特的功能和优秀的用户体验&#xff0c;成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…

BS-Diff | 扩散模型在骨抑制任务上的首次登场!

摘要 胸部 X 射线&#xff08;CXR&#xff09;是肺部筛查中常用的低剂量方式。然而&#xff0c;由于大约 75% 的肺部区域与骨骼重叠&#xff0c;这反过来又阻碍了疾病的检测和诊断&#xff0c;因此 CXR 的功效受到了一定程度的影响。作为一种补救措施&#xff0c;骨抑制技术已…

泛域名SSL证书购买攻略!

购买泛域名证书&#xff08;也称为通配符证书&#xff09;通常涉及以下几个步骤&#xff1a; 1. 选择证书提供商&#xff1a; 首先&#xff0c;你需要选择一个信誉良好的SSL证书提供商&#xff0c;如 Sectigo、GlobalSign、DigiCert 或者JoySSL。部分云服务提供商如华为云也提供…

冒泡排序----深刻理解版本

前面虽然向大家介绍了冒泡排序&#xff0c;但是表达的不是很清楚&#xff0c;这次我带着更深刻的理解向大家介绍以下冒泡排序。 1.冒泡排序 冒泡排序其实是一种排序算法&#xff0c;通过数据之间的相互比较将一堆混乱的数据按照升序或者降序的顺序排列。 2.解题思路 解题思…

【人工智能基础】GAN与WGAN实验

一、GAN网络概述 GAN&#xff1a;生成对抗网络。GAN网络中存在两个网络&#xff1a;G&#xff08;Generator&#xff0c;生成网络&#xff09;和D&#xff08;Discriminator&#xff0c;判别网络&#xff09;。 Generator接收一个随机的噪声z&#xff0c;通过这个噪声生成图片…

解决uniapp软键盘弹起导致页面fixed定位元素被顶上去

在移动端开发中通常导航栏需要固定在页面的最顶端&#xff0c;但当页面中有输入框且dom元素较多时&#xff0c;点击输入框弹出软键盘会促使导航栏往上移 正常情况如图一所示&#xff0c;软键盘弹起如图二所示 图一 图二 解决办法 1&#xff09;给输入框添加 :adjust-position…

李飞飞团队 AI4S 最新洞察:16 项创新技术汇总,覆盖生物/材料/医疗/问诊……

不久前&#xff0c;斯坦福大学 Human-Center Artificial Intelligence (HAI) 研究中心重磅发布了《2024年人工智能指数报告》。 作为斯坦福 HAI 的第七部力作&#xff0c;这份报告长达 502 页&#xff0c;全面追踪了 2023 年全球人工智能的发展趋势。相比往年&#xff0c;扩大了…

node.js 下载安装 配置环境变量

1 官网下载 需要的版本https://nodejs.org/dist 下载 .msi的文件 2 根据安装向导&#xff0c;安装 3 检查安装 是否成功&#xff0c;winr 输入cmd&#xff0c;输入node --version 回车&#xff0c;查看版本 4 配置换进变量 node路径是 安装时 的安装路径 5 vscode 启动项目…

HTML(3)——常用标签3

引用标签 1.<blockquote>和<q> 两者都是对文本的解释引用&#xff0c;<blockquote>是用较大的段落进行解释&#xff0c;<q>是对较小的段落进行解释。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

【小浩算法 BST与其验证】

BST与其验证 前言我的思路思路一 中序遍历判断数组无重复递增思路二 递归边界最大值最小值的传递 我的代码测试用例1测试用例2 前言 BST是二叉树一个经典应用&#xff0c;我们常常将其用于数据的查找以及构建平衡二叉树等。今天我所做的题目是验证一颗二叉树是否为二叉搜索树&…

基于PHP高考志愿填报系统搭建私有化部署源码

金秋志愿高考志愿填报系统是一款为高中毕业生提供志愿填报服务的在线平台。该系统旨在帮助学生更加科学、合理地选择自己的大学专业和学校&#xff0c;从而为未来的职业发展打下坚实的基础。 该系统的主要功能包括:报考信息查询、志愿填报数据指导、专业信息查询、院校信息查询…

学习CSS3动画教程:手把手教你绘制跑跑卡丁车

学习之前&#xff0c;请先听一段音乐&#xff1a;等登&#xff0c;等登&#xff0c;等登等登等登&#xff01;没错&#xff0c;这就是我们当年玩的跑跑卡丁车的背景音乐&#xff0c;虽然后来有了QQ飞车&#xff0c;但还是更喜欢跑跑卡丁车&#xff0c;从最初的基础板车&#xf…

深入入IAEA底层LinkedList

✅作者简介&#xff1a;大家好&#xff0c;我是再无B&#xff5e;U&#xff5e;G&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1.掌握LinkedList 2.…

好用无广告的快捷回复软件

在现在的工作环境中&#xff0c;时间就是金钱。对于客服人员来说&#xff0c;能够快速而准确地回复客户的问题&#xff0c;是提高工作效率和客户满意度的关键。因此&#xff0c;一个实用的快捷回复工具是必不可少的。今天&#xff0c;我想向大家推荐一款好用且无广告的客服快捷…

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

2024年受欢迎的主流待办事项提醒软件推荐

随着科技的飞速发展&#xff0c;2024年的今天&#xff0c;众多优秀软件如雨后春笋般涌现&#xff0c;极大地便利了我们的生活与工作。其中&#xff0c;待办事项提醒软件尤为受欢迎&#xff0c;它们不仅能记录日常待办任务&#xff0c;还能在关键时刻提醒我们及时处理&#xff0…

1707jsp电影视频网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 校园商城派送系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数…

使用 SSH 连接 GitHub Action 服务器

前言 Github Actions 是 GitHub 推出的持续集成 (Continuous integration&#xff0c;简称 CI) 服务它提供了整套虚拟服务器环境&#xff0c;基于它可以进行构建、测试、打包、部署项目&#xff0c;如果你的项目是开源项目&#xff0c;可以不限时使用服务器硬件规格&#xff1…

(1)AB_PLC Studio 5000软件与固件版本升级

AB_PLC Studio 5000软件与固件版本升级 1. 软件版本升级2. 固件版本升级1. 软件版本升级 使用将老程序从19版本升级到33版本。 step1:双击程序.ACD文件,打开界面如下。 step2:点击更改Controller,选择我们的新CPU的型号和版本号。点击确定 step3:点击确定,等待。 st…