图像处理(二)

图像处理(2)

裁剪图片

python 复制代码
from skimage import io,data

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

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

io.imshow(roi)

运行结果:

将图片进行二值化

python 复制代码
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)

运行结果:

图像归一化

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

python 复制代码
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)

运行结果:

图像归一化

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

python 复制代码
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)

python 复制代码
from skimage import io,data

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

print(img.dtype.name)

运行代码:

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

python 复制代码
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)

运行结果:

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

python 复制代码
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

python 复制代码
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

python 复制代码
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)
python 复制代码
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(从蓝色到黄色的颜色分量)
python 复制代码
from skimage import io,data,color

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

lab=color.rgb2lab(img)

io.imshow(lab)

运行结果:

④ Gray转rgb

python 复制代码
from skimage import io,data,color

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

rgb=color.gray2rgb(img)

io.imshow(rgb)

运行结果:

⑤ Hsv转rgb

python 复制代码
from skimage import io,data,color

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

rgb=color.hsv2rgb(img)

io.imshow(rgb)

运行结果:

⑥ lab转rgb

python 复制代码
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:

python 复制代码
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()显示绘图。

python 复制代码
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()

运行结果:

查看库中有几张图片

python 复制代码
import skimage.io as io

from skimage import data_dir

str=data_dir + '/*.png'

coll = io.ImageCollection(str)

print(len(coll))

查看文件夹中的第二张图片

python 复制代码
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])

# 自己文件夹里的图片

运行结果:

进行灰度处理:

python 复制代码
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])

运行结果:

视频的处理

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

python 复制代码
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的灰度图保存在文件夹下

python 复制代码
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!!!

相关推荐
⊙月8 分钟前
CMU 10423 Generative AI:lec2
人工智能·aigc
pyniu13 分钟前
深度学习实战4--GAN进阶与优化
人工智能·深度学习·生成对抗网络
爱研究的小牛14 分钟前
NeRF——AI生成虚拟3D场景视频
人工智能·深度学习·aigc·音视频·虚拟现实
听忆.17 分钟前
基于机器学习的蛋白质-蛋白质相互作用网络推断方法
人工智能·机器学习
helloyangkl17 分钟前
AI建模——AI生成3D内容算法产品介绍与模型免费下载
人工智能
小陈phd30 分钟前
深度学习从入门到精通——yolov3算法介绍
人工智能·深度学习·目标检测·计算机视觉
青石横刀策马31 分钟前
从0开始深度学习(3)——概率
人工智能·深度学习
听忆.41 分钟前
c++ +Opencv实现车牌自动识别
人工智能·计算机视觉
INSBUG1 小时前
本地大语言模型部署及应用
人工智能·语言模型·自然语言处理
jndingxin1 小时前
OpenCV颜色空间转换(1)颜色空间转换函数cvtColor()的使用
人工智能·opencv·webpack