计算机视觉-图像的基本操作

图像

  1. 计算机中图像就是由像素点组成。
  2. RGB表示颜色通道,R红色G绿色B蓝色,[0-255]表示该像素点的亮度。
  3. 黑白图像只有一个通道表示亮度。
  4. 图像是500*500,则RGB三个通道均是500*500的矩阵,一个图像则为[500,500,3]。

数据读取-图像

cv2.IMREAD_COLOR:彩色图像

cv2.IMREAD_GRAYSCALE:灰色图像

import cv2                      #OpenCv,有很多计算机视觉需要的的算法;opencv读取的格式是BGR
import matplotlib.pyplot as plt #Pyplot包含一系列绘图函数的相关函数,用as给它设置一个别名plt
import numpy as np              #支持大量的维度数组与矩阵运算 用as给其设置别名np
#%matplotlib inline             #用它可以省略plt.show(),vscode用不了


def cv_show(name,img):      #定义一个函数,更方便的显示图像
    cv2.imshow(name,img)    #图像的显示,也可以创建多个窗口
    cv2.waitKey(0)          #等待时间,毫秒级,0表示任意键终止
    cv2.destroyAllWindows()


img=cv2.imread('cat.jpg')   #显示一个BGR图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows



img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)  #显示一个灰度图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows

cv2.imwrite('mycat.png',img)    #保存图片

print(img.shape)             #图像基本数值

print(img)                   #图片每一个像素点(矩阵形式)

print(type(img))             #查看图片底层格式

print(img.size)              #计算图片像素点个数

print(img.dtype)             #图像数据类型

截取部分图像数据

img=cv2.imread('cat.jpg')
cat=img[0:200,0:200]         #截取一段图像
cv_show('cat',cat)           #显示截取图像的彩色图

颜色通道提取

B,G,R=cv2.split(img)
print(B)
print(B.shape)
img=cv2.merge((B,G,R))
print(img.shape)

cur_img=img.copy()        #只保留R通道
cur_img[:,:,0]=0
cur_img[:,:,1]=0
cv_show('R',cur_img)


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

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

数据读取-视频

cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。

如果是视频文件,直接指定好路径即可。

import cv2               
import matplotlib.pyplot as plt    
import numpy as np


#播放一个灰度视频
vc = cv2.VideoCapture('test.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('result',gray)
        if cv2.waitKey(10) & 0xFF == 27:
            break
vc.ralease()
cv2.destroyAllWindows()



#显示一个彩色视频
vc = cv2.VideoCapture('test.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:
        cv2.imshow('result',frame)
        if cv2.waitKey(10) & 0xFF == 27:
            break
vc.ralease()
cv2.destroyAllWindows()

你可能感兴趣的:(opencv,python)