第一章、图像的基本操作

基于Python的OpenCV 学习

第一章、图像的基本操作

00_思维导图

在这里插入图片描述

01_cv2.imread

import cv2

# cv2.imread(m)方法,image read,读取图片。
image1 = cv2.imread('cat.jpg')
# 默认读取方式是BGR,而不是RGB。
# 返回的对象是一个长列表,
# 若图片为彩色图片,列表元素是每个像素点的rgb。
# 若图片为灰白图片,列表元素是每个像素点的灰度值。

print(image1)

02_cv2.imshow_cv2.waitKey

import cv2
image = cv2.imread('cat.jpg')

# cv2.imshow(image_name,image)方法,image show,显示图片。
cv2.imshow('HelloWorld',image)
# 其中,image_name变量表示显示的图像窗口名,image变量表示要显示的图片

# cv2.waitKey(time)方法,保持图片窗口的停留。
# 若使用Jupyter Notebook,则无需此操作。
cv2.waitKey(0)
# 其中,time变量表示图片窗口停留多少毫秒。
# 当time=0时,按任意键停止显示图片窗口。



03_cv2.destroyAllWindows

import cv2
image1 = cv2.imread('cat.jpg')
image2 = cv2.imread('clahe.jpg')
cv2.imshow('Img1',image1)
cv2.imshow('Im2',image2)
cv2.waitKey(10000)

# cv2.destroyAllWindows()方法,清理图像窗口的内存。
cv2.destroyAllWindows()
# cv2.destroyAllWindows()方法并不负责关闭图像窗口。

04_img.shape

import cv2
image1 = cv2.imread('cat.jpg')

# image.shape方法,查看图片的形状。
print(image1.shape)
# 返回属性分别代表H、W、C。
# H - 高度 、 W - 宽度 。
# C=3时说明图片是彩色图。

05_image.size

import cv2
image1 = cv2.imread('cat.jpg')

# image.size方法,返回图片的大小。
# 此处的图片大小具体指的是像素点的个数。
print(image1.size)

06_(cv2.IMREAD_GRAYSCALE)

import cv2

# 读取图片时,可以设置cv2.IMREAD_GRAYSCALE变量,将原图作为灰度图读取。
image1 = cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)

print(image1)
print(image1.shape)
cv2.imshow('Hello',image1)
cv2.waitKey()
cv2.destroyAllWindows()

07_cv2.imwrite

import cv2
image1 = cv2.imread('cat.jpg')

# cv2.imwrite(image_name,image)方法,
# 将image图片对象保存为名为image_name的图片文件。
cv2.imwrite('06.jpg',image1)

08_cv2.VideoCapture

import cv2

# cv2.VideoCapture(video)方法,获取video视频。
video1 = cv2.VideoCapture('dpc.mp4')

# 检验视频能否正常打开。
if video1.isOpened():
    # video.read()方法,返回两个变量。
    # 第一个变量是视频能否正常打开的布尔值。
    # 第二个变量是视频的当前帧。
    open,frame = video1.read()
else:
    open = False

cv2.imshow('frame1',frame)
cv2.waitKey()

# 释放视频。
video1.release()

cv2.destroyAllWindows()

09_cv2.cvtColor

import cv2
video1 = cv2.VideoCapture('dpc.mp4')
open,frame = video1.read()

# cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)方法,实现图片的颜色转换。
# 其中,cv2.COLOR_BGR2GRAY,将BGR颜色的图片转换为GRAY。
gray1 = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

cv2.imshow('gray',gray1)
cv2.waitKey()
cv2.destroyAllWindows()

10_视频播放

import cv2
video1 = cv2.VideoCapture('dpc.mp4')
if video1.isOpened():
    open , frame = video1.read()
else:
    open = False
while open:
    ret , frame = video1.read()
    if frame is None:
        break
    if ret:
        cv2.imshow('dpc',frame)
        if cv2.waitKey(1) == 27:
            break
        # 此处详细解释一下cv2.waitKey(t)方法的具体含义
        # 等待t个毫秒
        # 若在此时间段内无操作,则返回 -1
        # 若在此时间段内有摁键操作,将返回摁键的ASC码
        # 27对应的是键盘上的ESC键
video1.release()
cv2.destroyAllWindows()

11_改变图片显示区域

import cv2
image1 = cv2.imread('hwc.jpg')
cv2.imshow('hwc',image1[:100,100:200])
cv2.waitKey()
cv2.destroyAllWindows()

12_cv2.split

import cv2
image1 = cv2.imread('hwc.jpg')

# cv2.split(image)方法,图像颜色通道提取方法。
# 该方法返回三个对象,分别是图像的b、g、r颜色通道。
b , g , r = cv2.split(image1)

print(b,'\n',g,'\n',r)

13_cv2.merge

import cv2
image1 = cv2.imread('hwc.jpg')
b,g,r = cv2.split(image1)

# cv2.merge()方法,合并三个颜色通道为完整的图像。
image2 = cv2.merge((b,g,r))

cv2.imshow('image2',image2)
cv2.waitKey()
cv2.destroyAllWindows()

14_image.copy

import cv2
image1 = cv2.imread('hwc.jpg')

# image.copy()方法,复制image对象。
image2 = image1.copy()

# 将image2对象的B、G通道全部清空,达到只显示R通道的目的。
image2[:,:,0] = 0
image2[:,:,1] = 0
cv2.imshow('R',image2)
cv2.waitKey()
cv2.destroyAllWindows()

15_cv2.copyMakeBorder

import cv2
import matplotlib.pyplot as plt
image1 = cv2.imread('hwc.jpg')
top,bottom,left,right = (100,100,100,100)

# cv2.copyMakeBorder(image,top,bottom,left,right,borderType)方法,实现图片的边缘填充。
image2 = cv2.copyMakeBorder(image1,top,bottom,left,right,borderType=cv2.BORDER_REPLICATE)
image3 = cv2.copyMakeBorder(image1,top,bottom,left,right,borderType=cv2.BORDER_REFLECT)
image4 = cv2.copyMakeBorder(image1,top,bottom,left,right,borderType=cv2.BORDER_REFLECT_101)
image5 = cv2.copyMakeBorder(image1,top,bottom,left,right,borderType=cv2.BORDER_WRAP)
image6 = cv2.copyMakeBorder(image1,top,bottom,left,right,borderType=cv2.BORDER_CONSTANT,value=0)
# 其中,top、bottom、left、right四个参数分别代表边缘的填充长度。
# borderType表示填充方式。
# BORDER_REPLICATE:复制法,复制最边缘像素。
# BORDER REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制,例如:fedcba|abcdefgh|hgfedcba。
# BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,例如:gfedcb|abcdefgh|gfedcba。
# BORDER_WRAP:外包装法,例如:cdefgh|abcdefgh|abcdefg。
# BORDER_CONSTANT:常量法,常数值填充。此时需要一个value值表示填充颜色,0为纯黑,255为纯白。

# 调用matplotlib显示多个图片加以比较。
plt.subplot(2,3,1),plt.imshow(image1),plt.title('1')
plt.subplot(2,3,2),plt.imshow(image2),plt.title('2')
plt.subplot(2,3,3),plt.imshow(image3),plt.title('3')
plt.subplot(2,3,4),plt.imshow(image4),plt.title('4')
plt.subplot(2,3,5),plt.imshow(image5),plt.title('5')
plt.subplot(2,3,6),plt.imshow(image6),plt.title('6')
plt.show()
cv2.destroyAllWindows()

16

import cv2
image1 = cv2.imread('hwc.jpg')

# 图像列表支持加法操作。
image1 += 10

cv2.imshow('image1',image1)
cv2.waitKey()
cv2.destroyAllWindows()

17.cv2.add

import cv2
img1 = cv2.imread('hwc.jpg')
img2 = cv2.imread('cat.jpg')

# cv2.add(image1,image2)方法,实现两个相同大小图像的颜色通道相加。
img3 = cv2.add(img1[:200,:200],img2[:200,:200])
# 列表元素255封顶。

cv2.imshow('img3',img3)
cv2.waitKey()
cv2.destroyAllWindows()

18_cv2.resize

import cv2
image1 = cv2.imread('hwc.jpg')
print(image1.shape)

# cv2.resize(image,shape)方法,重新设置图片的形状大小。
image2 = cv2.resize(image1,(284,330))
# 此处的shape变量的值为新图像的宽度W和高度H,与原图像列表形式的前两个参数含义相反。

print(image2.shape)
cv2.imshow('2',image2)
cv2.waitKey()
cv2.destroyAllWindows()

19_fx_fy

import cv2
image1 = cv2.imread('hwc.jpg')
print(image1.shape)

# cv2.resize(image,(0,0),fx,fy)方法,将图片按照横纵坐标拉伸。
image2 = cv2.resize(image1,(0,0),fx=2,fy=3)
# fx变量表示将原图的宽度放大/缩小的倍数。
# fy变量表示将原图的高度放大/缩小的倍数。

print(image2.shape)
cv2.imshow('2',image2)
cv2.waitKey()
cv2.destroyAllWindows()

20_cv2.addWeighted

import cv2
img1 = cv2.imread('hwc.jpg')
img2 = cv2.imread('cat.jpg')
img2 = cv2.resize(img2,(330,284))

# cv2.addWeighter(image1,rate1,image2,rate2,c)方法,实现两个图像的按权重融合。
img3 = cv2.addWeighted(img1,0.5,img2,0.5,0)
# 该方法类似于函数z = Ax + By + C的功能。
# 其中rate1、rate2表示image1、image2图像所占的权重。
# C变量表示偏置值。

cv2.imshow('3',img3)
cv2.waitKey()
cv2.destroyAllWindows()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值