opencv笔记(特别)——函数

函数

文章目录

    • 函数
    • 一、图像处理函数
    • 二、其他函数
    • 三、OCR

一、图像处理函数

图像基本处理

  • cv2.imshow(name,img)

     name:窗口名称 ;img :窗口内容
    
  • cv2.waitkey(timeout)

     显示图片时间timeout,单位为ms,0代表一直显示
    
  • cv2.destoryAllWindows()

     关闭窗口
    
  • cv2.imread(filepath,flags)

     读取图片,默认是三通道(BGR)的彩色图,flags=0读入灰度图
    
  • cv2.imwrite(filename,img)

     保存图像,filename:文件名;img:内容
    
  • b,g,r=cv2.split(img)

     颜色通道提取,opencv提取格式为BGR(注意不是RBG)\
    
  • cv2.merge(b,g,r)

     重新组合颜色通道
    
  • cv2.copyMakeBorder(img,top, bottom, left, right,borderType)

     填充边界;img:内容;top, bottom, left, right:四区域的大小;borderType:填充种类
    
  • cv2.add(img1, img2)

     img1和img2的rgb值相加,超过255取255
    
  • cv2.addWeighted(img1,α,img2,β,b)

     为图片添加权重, 混合图像,img1=X1;img2=X2;αX1+βX2+b
    
  • cv2.resize(img, (width, height))

     变换图像大小(注意img.shape的出来的是(height,width))
    
  • cv2.resize(img, (0, 0), fx=a, fy=b)

     变换图像大小((height,width)为(0,0),a为x变为原来a倍,b为y变为原来b倍)
    
  • cv_show(‘name’, contents)

     name:窗口名称;contents:内容
    

阈值与平滑处理

  • ret,det = cv2.threshold(src, thresh, maxval, type)

     ret:阈值;det:输出图
     src:原始图像;thresh:阈值,常见127(因为颜色为0-255);
     maxval:最大可能值(255);type:选择的功能或方法,即怎么判断阈值,二值化操作的类型
    
  • cv2.blur(img,ksize)

     均值滤波( 矩形中间的值=矩形内的值相加取平均值)
     img:图像;ksize:矩阵大小
    
  • cv2.boxFilter(img, ddepth,ksize, normalize=True)

     方框滤波: (normalize=True等同于均值滤波, normalize=false代表直接求和不取均值,越界后显示为255)**
     ddepth一般为-1表示得到的颜色通道和原图一致
    
  • cv2.GaussianBlur(img, ksize, sigmaX)

     高斯滤波:(离得近的权重高,离得远的权重低)
     sigmaX为高斯函数在X轴上的标准差σ,调整σ实际是在调整周围像素对当前像素的影响程度,
     调大σ即提高了远处像素对中心像素的影响程度,滤波结果也就越平滑
    
  • cv2.medianBlur(img,ksize)

     中值滤波:(矩形内的值排序后取中间值)
     ksize为矩阵大小,即ksize×ksize
    

图像形态学处理

  • numpy.ones(shape, dtype=None, order=‘C’)

     函数返回给定形状和数据类型的新数组,其中元素的值设置为1。
    
  • 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算子
     img:当前的图像;ddepth:图像的深度(一般为-1);dx和dy分别表示水平和竖直方向;ksize:Soble算子的大小
    
  • cv2.Scharr(img, ddepth, dx, dy)

     Scharr算子(能捕捉到更多的细节)
    
  • cv2.Laplacian(img, ddepth)

     Laplacian算子(噪点影响很大)
    
  • cv2.convertScaleAbs(sobelx)

     变为绝对值
    

边缘检测

  • cv2.Canny(img, threshold1, threshold2)

     边缘检测(threshold

图像金字塔与轮廓检测

  • cv2.pyrUp(img)

      高斯金字塔:向上采样(放大图像)
    
  • cv2.pyrDown(img)

     高斯金字塔:向下采样(缩小图像)
    
  • img-cv2.pyrUp(cv2.pyrDown(img))

     拉普拉斯金字塔(原图-(先缩小后放大))
    
  • cv2.findContours(img, mode, method)

     找出轮廓
     img:待测图像
     mode:轮廓检索模式
     method:轮廓逼近方法
    
  • cv2.drawContours(img, contours, contourIdx, color,width)

     画出轮廓
     contours:轮廓
     contourIdx:轮廓数量,画第几个轮廓;默认-1,即所有轮廓
     color:颜色(B,G,R)
     width:线条的宽度
    
  • cv2.contourArea(cnt)

     计算轮廓面积
    
  • cv2.arcLength(cnt, True)

     计算轮廓周长,True表示闭合
    
  • cv2.approxPolyDP(cnt, epsilon, True)

     轮廓近似(普朗克算法)
     cnt:具体哪个轮廓
     epsilon:给字节指定一个值来比较,一般按照周长的百分比设置
     True:闭合
    
  • x, y, w, h = cv2.boundingRect(cnt)

     (x, y)为坐标点,w, h为矩形长宽
    
  • cv2.rectangle(img, pt1, pt2, color,width)

     画矩形
     pt1:坐标点1
     pt2:坐标点2
     width:线宽
    
  • (x, y), radius = cv2.minEnclosingCircle(cnt)

     外接圆近似
    
  • cv2.circle(img, center, radius,color, width)

     画圆
    
  • res = cv2.matchTemplate(img, template, method)

     模板匹配
     method:匹配方法
    
  • min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

     min_val:算法算出的最小值
     max_val:算法算出的最大值
     min_loc:最小值所在的坐标(因为得到了h,w,所以可得到矩形)
     max_loc :最大值所在的坐标
    

直方图与傅里叶变换

  • cv2.calcHist(img, channels, mask, histSize, ranges)

     像素直方图统计:
     img:原图像格式为uint8或floart32。当传入函数时应用中括号[]来,例如[img]
     channels:同样用中括号,他会告诉我们统幅图像的直方图。如果入图像是灰度图它的值就是[0],如果是彩色图像
     		的传入的参数可以是[0][1][2],他们分别对应着BGR。
     mask:掩码图像。统整幅图像的直方图就把它为None。但是如果你想统图像某一分的直方图的,就制作一个掩码图
     		像并使用它。
     histSize:BIN的数目。也应用中括号括来
     ranges:像素值范围常为[0256]
    
  • cv2.bitwise_and(img, img, mask=mask)

     与操作
    
  • cv2.equalizeHist(img)

     直方图均衡化
    
  • cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))

     自适应直方图均衡化
     clipLimit:颜色对比度的阈值
      titleGridSize:进行像素均衡化的网格大小,即在多少网格下进行直方图的均衡化操作
    
  • cv2.dft()

     执行傅里叶变换
    
  • cv2.idft()

     傅里叶逆变换
    

二、其他函数

  • cv2.getStructuringElement(shape, size)

     shape:表示核的形状。可以选择三种
     	(1)矩形:MORPH_RECT
     	(2)交叉形:MORPH_CROSS;
     	(3)椭圆形:MORPH_ELLIPSE;
     size:表示核的尺寸。
    

三、OCR

(1)边缘检测
(2)获取轮廓
(3)变换
(4)OCR

你可能感兴趣的:(OpenCV,opencv,python,计算机视觉)