- 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
窗口交互(图像窗口滑动条、鼠标响应事件)
- 图像窗口滑动条
滑动条只能输出整数,因此如果需要得到小数,则需要进行后续处理;如果使用的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()