OpenCV图像处理基础

数据读取

引入OpenCV库

import cv2

图片的读取

img=cv2.imread('cat.jpg')
#参数为图片的路径

注意:这里以及之后的路径都是相对路径

其中,读取的图片格式为ndarray数组格式:

print(type(img))
print(img.shape)

输出:<class ‘numpy.ndarray’>
(414, 500, 3)
注:
①数组的数为0-255之间,0代表黑色,255代表白色
②数值越大,颜色越深;数值越小,颜色越浅
③414和500分别表示图像的高和宽(像素点个数),3表示每个像素点具有三个颜色通道,即B(蓝色)G(绿色)R(红色)三个通道,将三个通道合到一块就是一个彩色图像(后面会讲到通道合并)

图像的显示:

cv2.imshow('image',img)
#第一个参数为图片展示时的名字,第二个参数为图片变量
cv2.waitKey(1000)
#这里的1000表示展示1000ms,如果参数为0,就表示按下随意键就终止图片展示
cv2.destroyAllWindows()
#这里表示删除图片窗口

在这里插入图片描述
图片的保存:

cv2.imwrite('mycat.png',img)
#第一个参数为保存图片的路径,第二个参数表示所保存的图片变量

视频的读取

cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果想要读取视频文件,只需要指定好视频路径即可。
注意:OpenCV读取的“视频”实质都是一帧一帧的图片,后期我们进行对视频流的处理时也是对图片处理

vc = cv2.VideoCapture('test.mp4')
#这里表示读取相关路径为test.mp4的视频

while open:
    ret, frame = vc.read()
    #如果能读取,则将第一个参数赋予True,否则赋予False
    #第二个参数赋予所读取的图片
    if frame is None:
        break
        #这里表示如果视频流读完了,即读取的图片是空值,就退出循环
    if ret == True:
        cv2.imshow('result', frame)#显示
        if cv2.waitKey(100) & 0xFF == 27:
            #处理一帧等100ms(处理间隔是100ms)
            #27代表Esc退出键,表示按Esc就退出视频
            break
vc.release()
#释放掉vc
cv2.destroyAllWindows()
#关闭视频窗口

图像处理基本操作

图像灰度处理

利用OpenCV中的cvtColor函数

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#注意:OpenCV直接读取的图片格式是BGR格式
#第二个参数表示将BGR变成GRAY
cv2.imshow('gray',gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
灰度图只有一个颜色通道,所以是个二维数组

print(gray.shape)
print(gray)

(414, 500)
在这里插入图片描述

截取部分图像数据

这里类似numpy数组里的截取部分数组

cat=img[0:300,0:150]
#这里表示取出高是300,宽是150的左上角矩形区域
cv2.imshow('cat',cat)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

颜色通道提取与合并

通道提取

利用OpenCV中的split函数

b,g,r=cv2.split(img)
#参数为所要分割的图片变量

把三个通道切分称三个数组

print(r)

在这里插入图片描述
这里的二维数组只留下原图像的红色信息,绿色和蓝色被分割出去了

print(r.shape)

(414, 500)
此时,数组变成二维的了

只保留红色信息

# 只保留R
cur_img = img.copy()
#如果不加copy,则cur_img只是img的一个视图,这里类似numpy数组
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
#将B和G全部设成零
cv2.imshow('R',cur_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

处理后:
在这里插入图片描述

通道的合并

img=cv2.merge((b,g,r))
#将三个通道合并
print(img.shape)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(414, 500, 3)
在这里插入图片描述
此时,数组又变回三维,图像变回彩色

文:齐鲁工业大学 云灵未来人工智能协会 AIDC017

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值