1. opencv读的图片是按照B\G\R顺序排列色彩结构。cv2.imread, 默认彩色类型。可以选择以灰度形式读取,如img=cv2.imread('', IMREAD_GRAYSCALE).
2.img.shape的显示顺序为H\W\C(高、宽、通道)。img.dtype 查看数据类型如 uint8.
3.opencv视频的读取。cv2.Videocapture可以控制摄像头,用数字控制不同的设备如0,1. 如果想控制手机,则可以使用Droidcam这个工具。
4.VC=cv2.Videocapture。 vc.read()是一帧一帧读取,返回两个参数,oepn,frame=vc.read(): 一个是是否可以打开,另一个是一帧图像。视频处理要用循环来读数据一帧一帧。
5.ROI截取。img1=img[0:200,0:300],对高、宽截取。img[:5,:,2]意思是显示的数组为高0:5;全部宽,第g通道的值。
6.颜色通道拆分。b,g,r=cv2.split(img), 即为各通道的二维数组。三个通道顺序0,1,2对应b,g,r.所以可以指定某一个通道的数据。比如将所有r通道指定为0,img[:,:,2]=0。 三通道b,g,r可以merge到一起,cv2.merge((b,g,r))
7.边界填充cv2.copyMakeBorder。有几种方法,复制边缘像素、反射法、外包装、常量填充指定value0~255。
8.图像数值的加减,cv2会进行%255的取余操作。
9. 均值滤波:cv2.blur(img,[3,3]) #卷积矩阵为3X3。或cv2.boxFilter.噪音一般
10.高斯滤波:卷积核满足高斯分布,cv2.gaussionBlur(img,[5,5],1). 噪音稍好
11.中值滤波:找卷积核的中值,以中间值当成平滑后的结果。cv2.medianBlur(img,5).噪音较好
12.图像阈值操作:ret, dst=cv2.threshold(src,thresh,maxval,type),常用cv2.THRESH_BINARY,超过阈值的部分取maxval,否则取0. 其他的type均可以以阈值作为操作。
13.腐蚀操作:erosion,用黑的腐蚀白的。cv2.erode(img,kernel,iterations=1)
14.膨胀操作:dilate,白色膨胀大。cv2.dilate(img,kernel,interations=1) erode&dilate互为逆运算,弥补使用。
15.开运算:先腐蚀再膨胀。opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
16.闭运算:先膨胀再腐蚀。closing=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
17.梯度运算:膨胀-腐蚀,得到边界信息。gradient=cv2.morphologyEx(img,MORPH_GRADIANT,kernel)
18.礼帽/顶帽:原始输入-开运算结果。可以得到毛边的信息。一些细碎的区域信息。tophat=cv2.morphologyEx(img,MORPH_TOPHAT,kernel)
19.黑帽:闭运算-原始输入。blackhat=cv2.morphologyEx(img,MORPH_BLACKHAT,kernel)