Opencv基本操作

opencv的基本操作

相关的库

	# opencv 读取的格式是BRG格式
    import cv2 
    # 画图
    import matplotlib.pyplot as plt
    import numpy as np

读取图像、显示图像、关闭窗口

# 读取图像
img = cv2.imread('../imgs/cat1.jpg')
# 展示图像
cv2.imshow('img',img)
# 设置等待时间,毫秒级,0表示任意键终止图像显示
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()

图片的一些操作信息

  • img.shape = (height,width,ctype)
  • 读取灰度图
    • img = cv2.imread(’…/imgs/cat1.jpg’,cv2.IMREAD_GRAYSCALE)
    • 在这里插入图片描述
  • 保存图片
    • cv2.imwrite(‘mycat.png’,img)
  • img的格式==》 type(img)

读取视频

  • cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1
  • 如果是视频文件的,可以指定好路径即可
  • 视频是由2一帧帧图片组成的
# 读取视频(一个帅气的小哥哥)
vc = cv2.VideoCapture('../videos/sqdxgg.mp4')
# 检查文件路径是否正确
if vc.isOpened():
    open,frame = vc.read()
else:
    open = False

while open:
    ret,frame = vc.read()
    if frame is None:
        break
    if ret == True:
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        cv2.imshow('reslut',gray)
        # esc
        if cv2.waitKey(10) & 0xFF==27:
            break

# 释放
vc.release()
# 关闭所有窗口
cv2.destroyAllWidows()

在这里插入图片描述

读取图片的部分数据

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(5000)
    cv2.destroyAllWindows()

img = cv2.imread('../imgs/cat2.jpg')
# 原图像
cv_show('cat',img)
img = cv2.imread('../imgs/cat2.jpg')
cat = img[0:200,0:200]
# 部分图像
cv_show('cat',cat)

原图像

在这里插入图片描述

现在图像

在这里插入图片描述

颜色通道的提取

  • blue,green,red = cv2.split(img)
# 颜色通道的提取
img = cv2.imread('../imgs/cat2.jpg')
# blue,green,red = cv2.split(img)
cv_show('img',img)
b,g,r = cv2.split(img)
cv_show('blue',b)
cv_show('green',g)
cv_show('red',r)
# 将图片通道组合起来
img = cv2.merge((b,g,r))

在这里插入图片描述


def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(5000)

img = cv2.imread('../imgs/cat2.jpg')
cv_show('img',img)
# 只保留R
imgr = img.copy()
imgr[:,:,0]=0
imgr[:,:,1]=0
cv_show('R',imgr)

# 只保留G
imgg = img.copy()
imgg[:,:,0]=0
imgg[:,:,2]=0
cv_show('G',imgg)

# 只保留B
imgb = img.copy()
imgb[:,:,1]=0
imgb[:,:,2]=0
cv_show('B',imgb)

在这里插入图片描述

小记
  • 2020.06.30 0:04
  • 快高考了,即使已经经历了高考,当年备考的画面仍然在脑海中历历在目,希望每一名学子都能收到目标大学的录取通知书,2020高考加油
  • 今天太晚了,今天,如果不学点东西的话,又是一个荒废的一天

边界填充

  • BORDER_REPLICATE: 复制法,也就是复制最边缘像素
  • BORDER_REFLECT:反射法,对感兴趣的像素在两边进行复制
  • BORDER_REFLECT:反射法,也就是以最边缘像素为轴,对称
  • BORDER_WRAP:外包装法
  • BORDER_CONSTANT:常量法
img = cv2.imread('../imgs/dog1.jpg')

top_size,botton_size,left_size,right_size=(50,50,50,50)

replicate = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REFLECT_101)
wrap = cv2.cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_WRAP)
constant = cv2.cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_CONSTANT,value=0)

plt.figure()
plt.subplot(231)
plt.imshow(img,"gray")
plt.title('OERPLINAL')


plt.subplot(232)
plt.imshow(replicate,"gray")
plt.title('replicate')

plt.subplot(233)
plt.imshow(reflect,"gray")
plt.title('reflect')

plt.subplot(234)
plt.imshow(reflect101,"gray")
plt.title('reflect101')

plt.subplot(235)
plt.imshow(wrap,"gray")
plt.title('wrap')

plt.subplot(236)
plt.imshow(constant,"gray")
plt.title('constant')

plt.show()

在这里插入图片描述

数值计算

  • 在数值过大的时候,相当于%256

图像融合

首先直接相加

img_dog = cv2.imread('../imgs/dog1.jpg')
img_cat = cv2.imread('../imgs/cat1.jpg')

print(img_cat+img_dog)

在这里插入图片描述

  • 说明两张图片的维度不一样,不能直接相加
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(5000)

img_dog = cv2.imread('../imgs/dog1.jpg')# (313,500,3)
img_cat = cv2.imread('../imgs/cat1.jpg')# (312,500,3)

img_dog = cv2.resize(img_dog,(500,313))
img_cat_dog = img_dog+img_cat
print(img_cat_dog)

cv_show('dog',img_dog)
cv_show('cat',img_cat)
cv_show('cat_dog',img_cat_dog)

在这里插入图片描述

# 将dog横方向扩大3倍
res = cv2.resize(img_dog,(0,0),fx=3,fy=1)
plt.imshow(res)
plt.show()

在这里插入图片描述

图像融合(透明度)

img_dog = cv2.imread('../imgs/dog1.jpg')# (313,500,3)
img_cat = cv2.imread('../imgs/cat1.jpg')# (312,500,3)

img_dog = cv2.resize(img_dog,(500,313))
# 图像融合(透明度)
res = cv2.addWeighted(img_dog,0.4,img_cat,0.6,0)
plt.imshow(res)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值