OpenCV基本操作和基础函数

一、常用函数

  • cv2.imread(filepath,flags) 读取一张图片,默认读取三通道(RGB)彩图,flags若取值0则读取灰度图
  • cv2.VideoCapture(filepath) 读取一段视频 (视频相当于很多帧的图片,亦可定义为函数,方便之后调用——video_process将视频转为灰度视频)
def video_process(video):
    vc = cv2.VideoCapture(video)

    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.release()
    cv2.destroyAllWindows()
  • cv2.imshow(name,img) 显示图片,结合cv2.waitkey(0)使用,否则只显示一瞬间 (为了简便可将其定义为函数方法后续随时调用)
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  • cv2.waitkey(timeout) 显示图片的时间,单位ms,0则一直显示直到按任意键退出
  • b,g,r = cv2.split(img) 提取颜色通道,在OpenCV中提取的格式顺序为BGR而非RGB
  • cv2.merge(b,g,r) 重组颜色通道
  • cv2.imwrite(filename,img) 将图像保存
  • cv2.copyMakeBorder(img,top,bottom,left,right,borderType) 填充边界
  • cv2.resize(img, (width,height)) 变换图像的大小注意img.shape的出来的是(height,width))
  • cv2.resize(img, (0, 0), fx=0.25, fy=0.25,interpolation=cv2.INTER_NEAREST) 最近邻插值法缩放缩放到原来图像的四分之一 (用于快速裁剪较大图片)
def cv_scale(img):
    img=cv2.imread(img)
    print(img.shape)
    # 将图片高和宽分别赋值给x,y
    x, y = img.shape[0:2]
    # 最近邻插值法缩放
    # 缩放到原来的四分之一
    img_scaled = cv2.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv2.INTER_NEAREST)
    return img_scaled
  • cv2.addWeighted(img1,α,img2,β,b) 为图片添加权重, 混合图像 αX1+βX2+b
  • cv2.blur(img,ksize) 均值滤波( 矩形中间的值=矩形内的值相加取平均值)
  • cv2.boxFilter(img, ddepth,ksize, normalize=True) 方框滤波 (normalize=True等同于均值滤波, normalize=false代表直接求和不取均值,越界后显示为255)
  • cv2.GaussianBlur(img,ksize,sigmaX) 高斯滤波 (离得近的权重高,离得远的权重低
  • cv2.medianBlur(img,ksize) 中值滤波(矩形内的值排序后取中值)
  • cv2.erode(img, kernel, iterations) 腐蚀操作
  • cv2.dilate(img1, kernel, iterations) 膨胀操作
  • cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) 开运算(先腐蚀再膨胀)
  • cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) 闭运算(先膨胀再腐蚀)
  • cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) 梯度运算(膨胀-腐蚀)
  • cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) 顶帽运算(原始值-开运算)
  • cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel) 底帽运算(闭运算-原始值)
  • cv2.Sobel(img, ddepth, dx, dy,ksize) Sobel算子
  • cv2.Scharr(img, ddepth, dx, dy) Scharr算子(能捕捉到更多的细节)
  • cv2.Laplacian(img, ddepth) Laplacian算子(噪点影响很大)
  • cv2.Canny(img, threshold1, threshold2) 边缘检测(threshold<value<threshold2,范围越大,边缘检测细节越多)
  • cv2.pyrUp(img) 高斯金字塔:向上采样(放大图像)
  • cv2.pyrDown(img) 高斯金字塔:向下采样(缩小图像)
  • img-cv2.pyrUp(cv2.pyrDown(img)) 拉普拉斯金字塔(原图-(先缩小后放大))
  • cv2.findContours(img, mode, method) 找出轮廓
  • drawContours(img, contours, contourIdx, color) 画出轮廓
  • cv2.contourArea(contour) 轮廓面积
  • cv2.arcLength(cnt, True) 轮廓周长 True表示闭合的
  • cv2.approxPolyDP(cnt, epsilon, True) 轮廓近似(普朗克算法)
  • cv2.matchTemplate(img, templ, method) 模板匹配
  • cv2.rectangle(img, pt1, pt2, color) 画矩形
  • cv2.calcHist(img, channels, mask, histSize, ranges) 像素直方图统计
  • cv2.equalizeHist(img) 直方图均衡化

二、常用操作示例

  • 单纯保留某一颜色通道
img = img.copy()
img[:
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值