图像处理基础

#python  --opencv图像处理  --阈值、二值化、翻转、缩放、平移、融合(RGB\Gray)

一、基础知识

1、图像构成:像素块,单个像素块有明确的位置和分配值,形成图像矩阵

主要包括:二值图像、灰度图像、彩色

2、二值图像:二值化

其中像素点分两种0\255,分别代表黑色与白色

3、灰度图像:单通道图像,矩阵.shape(1,256,256)包括黑白和中间的灰色,将亮度划分为256

灰度值:像素值,亮度越高灰度值越大

灰度级:图像中不同灰度的最大数量。灰度级越大,图像的亮度范围越大

4、彩色图像:多通道图像,其中RGB为三通道,shape(3,256,256),代表红绿蓝三色通道

 二、图像读取

image = cv.imread(filename[, flags])

函数说明:

--filename:读取图像的文件路径和文件名
--filetype:
--Windows 位图 - * .bmp,* .dib
--JPEG 文件 - * .jpeg,* .jpg,*.jpe
--JPEG 2000文件 - * .jp2
--便携式网络图形 - * .png
--WebP - * .webp
--便携式图像格式 - * .pbm,* .pgm,* .ppm * .pxm,* .pnm
--TIFF 文件 - * .tiff,* .tif

--flags:读取图片的方式,可选项
--cv2.IMREAD_COLOR(1):始终将图像转换为 3 通道BGR彩色图像,默认方式
--cv2.IMREAD_GRAYSCALE(0):始终将图像转换为单通道灰度图像
--cv2.IMREAD_UNCHANGED(-1):按原样返回加载的图像(使用Alpha通道)
--cv2.IMREAD_ANYDEPTH(2):在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位
--cv2.IMREAD_ANYCOLOR(4):以任何可能的颜色格式读取图像

--返回值 image:读取的 OpenCV 图像,nparray 多维数组

示例

import cv2 as cv

# 读取图像
img = cv.imread("maliao.jpg", cv.IMREAD_COLOR)
cv.imshow("read_img", img)
# 灰度图像
img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
cv.imshow("gray_img",img_gray)
# 二值图像
ret, binary = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
cv.imshow("binary_img", binary)

cv.waitKey()

------------------------------
import cv2
import PIL.Image as Im
import numpy as np
 
im=cv2.imread('./data_dir/image.png')
#转换成rgb

im=cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
#将数据转换成Image对象

im=Im.fromarray(im).convert('RGB')
#Image 直接读取图片
im=Im.open('./data_dir','rgb')
#将Image的对象转换成numpy数组
im=np.asarray(im)

---------------------------------读取文件
import scipy.io as si
import h5py
import numpy as np
#读取npy文件
data=np.load('test.npy')
#保存npy文件
np.save('./test.npy',data)
#读取h5py文件
f=h5py.File('./test.h5','r')#以读的方式打开文件可以根据字典的键值获取数据
data=f['data']
#保存h5文件
f=h5py.File('./test.h5','w')
f['data']=im
f['label']=label
f.cloase()
#读取mat文件mat和h5类似都是字典格式
data=si.loadmat('test.mat')
im=data['x']
label=data['y']
#保存mat文件
si.savemat('test.mat',{'x':im,'y':label})

三、图片读取显示并保存           

import cv2 as cv

# 读取图片
img = cv.imread("maliao.jpg", 1)

# 显示图片
cv.imshow("demo", img)

# 等待输入
cv.waitKey(0)
cv.destroyAllWindows()

# 图片写入
cv.imwrite("demo.jpg", img)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43952858

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值