OpenCV进阶篇---图像基本处理

import cv2 as cv #读取的格式是BGR,与其他包读取格式有些差别,因此最好用CV中自带的函数进行展示
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline 
img=cv.imread("E:\OpenCVTests/timg (14).jpg")
#cv.imshow("imgShow",img)

#ROI
roi=img[200:600,300:700]
#cv.imshow("ROI",roi)

#颜色通道的拆分、合并
#方式一:
b,g,r=cv.split(img)
#red=cv.imshow("red",r)
#merg=cv.merge((b,g,r))#注意,此处是两个括号!!!!
#cv.imshow("merge",merg)
#方式二:
'''
copyImg=img.copy()
copyImg[:,:,0]=0#blue通道置为0
copyImg[:,:,1]=0#green通道置为0,实现了通道的拆分
cv.imshow("red",copyImg)
'''
#为图像添加边框
src=img.copy()
BLUE = [255,0,0]
replicate = cv.copyMakeBorder(src,10,10,10,10,cv.BORDER_REPLICATE)#复制法,即复制最边缘的像素
reflect = cv.copyMakeBorder(src,10,10,10,10,cv.BORDER_REFLECT)#反射法,对感兴趣的图像中的像素在两边进行复制      hgfedcba abcdefgh hgfedcba
reflect101 = cv.copyMakeBorder(src,10,10,10,10,cv.BORDER_REFLECT_101)#反射法,即以最边缘的像素为轴,对称     gfedcb    abcdefgh gfedcba
wrap = cv.copyMakeBorder(src,10,10,10,10,cv.BORDER_WRAP)#外包装法    abcdefg       abcdefg  abcdefg
constant= cv.copyMakeBorder(src,10,10,10,10,cv.BORDER_CONSTANT,value=BLUE)#常量法,常数值填充
#cv.imshow("input image",replicate)

#图像数值计算:
'''
1、图片+数值---->像素矩阵发生改变
2、图片+图片---->只能表示0-255之间的数值,越界的话,则用得到数值X取余255,将计算的结果放到矩阵中对应的位置
3.cv.add(src1,src2)----->大于255则取255,小于0则取0,且图像的尺寸必须相同,不同则需使用resize()函数
'''
#imgDog=cv.resize(imgCat,(400,414))  指定目标值--括号中的参数为imgCat的尺寸
#imgDog=cv.resize(imgCat,(0,0),fx=1.5,fy=1.5)  fx、fy为缩放的比例因子

#图像融合:
#result=cv.addWeighted(imgDog,0.4,imgCat,0.6,4)   两幅图像各自的权重,最后一个参数为亮度级的一个微调值
#灰度图像读取
gray=cv.imread("E:\OpenCVTests/timg (14).jpg",cv.IMREAD_GRAYSCALE)#灰度图像广泛应用后期应用中
#cv.imshow("grayImg",gray)
gray.shape
cv.waitKey(0) #按任意键可关闭窗口

#视频数据的读取
vc=cv.VideoCapture("E:\OpenCVTests\data\vtest.avi")
#检查是否能够打开
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=cv.cvtColor(vc,cv.COLOR_BGR2GRAY)
        cv.imshow("resule",gray)
        if cv.waitKey(100)&0xFF==27:#waitKey()中的数值,设置视频读取下一帧的等待时间,数值越小,读取以及播放速度越慢;;反之。
            break
vc.release()
cv.destroyAllWindows()


你可能感兴趣的:(OpenCV)