cv2.namedwindow("名字", cv2.WINDOW_NORMAL)
cv2.imshow("名字",数组)
ret,frame = cap.read()
cv2.imwrite("保存的路径")
cv2.destroyALLWindows()
resizeWindow
cv2.waitKey(0)等待时间
cap.caputure(0)本设备摄像头
cv2.VideoWrite("写入的路径",fourcc,帧数,像素)
鼠标回调函数:setMouseCallback(winname,callback,userdata)
callback(event:指事件,x,y,:指坐标,flags:组合键,userdata)
Trackbar控件(trackbarname,winname,value:trackbar当前值,count:最小值为0,最大值为count,callback,userdate)
getTrackBarPos参数(输入参数:trackbarname,输出参数:winname,输出:当前值)
核心知识
1:色彩空间变换
2:像素访问
3:矩阵的加减乘除。
4基本图形绘制
颜色空间RGB:人眼的色彩空间
opencv默认使用BGR
HSV:
Hue:色相,指色彩,如红色,蓝色
Saturation:饱和度,纯度
Value:明度
颜色转换:cv2.cvtcolor()
HSL:
Hue:色相,指色彩,如红色,蓝色
Saturation:饱和度,纯度
Lightness:亮度
区别
OpenCV中用到的矩阵都要转换成Numpy数组
Numpy是一个经高度优化的Python数值库
创建数组array()
创建全0数组zeros()/ones
创建全值数组full()
创建单元数组identity/eye()
格式:
np.array([])
np.zeros((行的个数,列的个数,通道数/层数),np.uint8)
np.ones和zeros一样
np.full(行的格式,列的个数,通道数/层数),数组中要的数字,np.uint8)
np.identity(3):即3×3,斜对角为1其他为0
np.eye(3,5,k=3)指从第一个第四个开始为1,第二行第5个为1…
Numpy检索
[y,x]
[y,x,通道数:指哪一个层数]也可以img[里面填一个数组,我学习的视频中是用一个循环,img[count,100]=[0,0,255]后面指的是[第一层,第二层,…]
获取子矩阵
Region of Image(ROI)
对段[y1:y2,x1:x2]
对整个的图像变更[:,:]
Mat由头和数据组成
一般2个用途:储存图像(图像可以看成一个高行宽列的一个矩阵)和储存矩阵
public:
…
int dims;维数
int rows,cols;行列数
uchar *data;储存数据的指针
int *refcount;引用技术
Mat浅拷贝
Mat A
A=imread(file,IMREAD_COLOR)
Mat B(A)
Mat 深拷贝
.copy()
.shape属性包括了 高度,长度,通道数
.size:图像占用了多大空间,长度*高度*通道数
.dtype,图像中每个元素的位深
通道分离与合并
spit()
merge((ch1,ch2,…))