图像处理(二)

图像处理(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!!!

相关推荐
Blossom.11818 分钟前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
科技小E36 分钟前
EasyRTC嵌入式音视频通信SDK打造带屏IPC全场景实时通信解决方案
人工智能·音视频
ayiya_Oese42 分钟前
[模型部署] 3. 性能优化
人工智能·python·深度学习·神经网络·机器学习·性能优化
仙人掌_lz44 分钟前
机器学习与人工智能:NLP分词与文本相似度分析
人工智能·机器学习·自然语言处理
jndingxin1 小时前
OpenCV CUDA模块中矩阵操作------归一化与变换操作
人工智能·opencv
ZStack开发者社区1 小时前
云轴科技ZStack官网上线Support AI,智能助手助力高效技术支持
人工智能·科技
每天都要写算法(努力版)1 小时前
【神经网络与深度学习】通俗易懂的介绍非凸优化问题、梯度消失、梯度爆炸、模型的收敛、模型的发散
人工智能·深度学习·神经网络
Blossom.1181 小时前
Web3.0:互联网的去中心化未来
人工智能·驱动开发·深度学习·web3·去中心化·区块链·交互
kyle~1 小时前
计算机视觉---目标检测(Object Detecting)概览
人工智能·目标检测·计算机视觉
hao_wujing1 小时前
YOLOv8在单目向下多车辆目标检测中的应用
人工智能·yolo·目标检测