Opencv基础

  • 2014.08.21 OpenCV3.0Alpha发布,新的项目结构——内核+插件;
  • 两种不同的颜色模型:“加色模型”和”减色模型”。加色模型使用光代表计算机屏幕上的颜色,而减色模型使用墨水在纸上打印这些数字图像。前者的原色由红色、绿色和蓝色(RGB)组成,后者有蓝色、品红、黄色和黑色(CMYK)四种原色组成。
  • HSV和HSL更类似于人的感知方式。HSV代表色调、饱和度和色值。HSL代表色调、饱和度和亮度。HSV的中轴是色值,HSL的中轴是光量。沿着中心轴的角度,有色调和实际的颜色。与中心轴的距离属于饱和度。
  • YCbCr 是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员。一般所讲的YUV大多是指YCbCr。YCbCr 有许多取样格式, 如4∶4∶4 , 4∶2∶2 , 4∶1∶1 和4∶2∶0。
    YCbCr与RGB的相互转换:
    Y=0.299R+0.587G+0.114B
    Cb=0.564(B-Y)
    Cr=0.713(R-Y)
    🤍 YUV 和 Y,Cr,Cb只是相差128。
    🤍 YUV没有负值,Y,Cr,Cb最高位为符号位,U = Cr + 128;V = Cb +128

窗口交互(图像窗口滑动条、鼠标响应事件)

OpenCV交互写字
鼠标框选roi区域

  • 图像窗口滑动条
    滑动条只能输出整数,因此如果需要得到小数,则需要进行后续处理;如果使用的value参数是全局变量,则可以不用修改userdata参数,使用参数的默认值0即可。
#cv.createTrackbar()函数原型
cv.createTrackbar(trackbarname,
				  winname,
				  value,
				  count
				  [, onChange
				  [, userdata]])
trackbarname:滑动条的名称
winname:在其中创建滑动条的窗口的名称
value:指向整数变量的指针
count:滑动条的最大值
onChange:每次滑动条更改位置时要调用的函数指针
userdata:传递给回调函数的可选参数
  • 鼠标响应事件
    当鼠标指针位于对于的图像窗口内时,时刻检测鼠标鼠标指针状态,当鼠标指针状态发生改变时,调用回调函数,根据回调函数中事件逻辑选择执行相应的操作。
#cv.MouseCallback()函数原型
None = cv.MouseCallback(winname,
						onMouse,
				  		[, userdata])
winname:在其中添加鼠标响应的窗口的名称
onMouse:鼠标响应的回调函数
userdata:传递给回调函数的可选参数

保边算法

保边滤波器是指在滤波过程中能够有效的保留图像中的边缘信息的一类特殊滤波器,如 双边滤波(Bilateral filter)、导向滤波(GuidedFilter)
Opencv学习(二)-七种保边滤波器算法
保边平滑滤波器之双边滤波理论学习
图像处理基础(一)引导滤波
A High-Efficiency Fully Convolutional Networks for Pixel-Wise Surface Defect Detection

连通域分析connectedComponentsWithStats()

过滤原始图像中较小的区域,留下较大区域。
在这里插入图片描述

OpenCV—连通域分析connectedComponentsWithStats()
opencv (三十五)连通域分析

大津阈值分割(OSTU)

大津法是一种灰度图像自适应阈值分割算法,是日本学者Ostu于1979年提出,又称类间方差阈值分割法。大津法根据图像的灰度分布将图像分为前景和背景两部分,前景是我们分割出来的部分。前景和背景的分割值就是我们要通过类间方差法求出的阈值。
大津阈值分割(OSTU)

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

image = cv2.imread("2.bmp")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
plt.subplot(131), plt.imshow(image, "gray")
plt.title("source image"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.hist(image.ravel(), 256)
plt.title("Histogram"), plt.xticks([]), plt.yticks([])
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) #方法选择为THRESH_OTSU
plt.subplot(133), plt.imshow(th1, "gray")
plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([])
plt.show()

在这里插入图片描述

微信二维码引擎OpenCV开源

在这里插入图片描述
重磅!微信二维码引擎OpenCV开源!3行代码让你拥有微信扫码能力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值