opencv_python 基本知识

基本函数

cv2.IMREAD_COLOR彩色 Cv2.IMREAD_GRAYSCALE黑白
Img=cv2.imread(‘cat,jpg’,option) #img是一个矩阵BGR格式
cv2.imshow(‘name’,img)#显示图像
cv2.waitKey(0)#等待时间
cv2.destroyALLWindows()#关闭窗口##这个三个可以封装成一个函数
Img.shape#img的行列和维数
cv2.imwrite(‘cat.png’,img)#保存图片
type(img)#格式img.size像素值img.dtype数据格式
cat=img(0:200,0:200)#截取部分图像
b,g,r=cv2.split(img)#三通道图像
img=cv2,merge(b,g,r)#还原
cat_img=img.capy()#复制图像
cat_img[:,:,0]=0
cat_img[:,:,1]=0
#显示一颜色通道

二值化,滤波

二值化

 retval, dst= cv2.threshold(src, thresh, maxval, type)
 retval 得到的阈值值
 dst 输出图
 src 输入图,单通道
 thres 阈值
 maxvalue 超过阈值赋予的值
 type 二值化操作的算法有5种类型
• cv2.THRESH_BINARY
• cv2.THRESH_BINARY_INV
• cv2.THRESH_TRUNC
• cv2.THRESH_TOZERO
• cv2.THRESH_TOZERO_INV

滤波
cv2.blur(img,(3,3))均值滤波
cv2.boxFilter(img,-1,(3,3),normalize=Rrue)方框滤波
cv2.gaussianBlur(img,(5,5),1)高斯
cv2.dedianBlur(img,5)中值滤波

形态学操作

腐蚀操作
kernel=np.ones((5,5),np.uint8)卷积核
cv2.erode(img,kernel,iterations=1)腐蚀一次
膨胀
cv2.dilate(img,kernel,iterations=1)
开运算先腐蚀后膨胀(胖)
闭运算先膨胀后腐蚀(瘦)
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,ke rnel)
cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

梯度

opencv_python 基本知识_第1张图片

canny边缘检测

cv2.canny(img,80,150)

步骤
1进行高斯滤波
2计算梯度和方向
3应用非极大值抑制
4应用双阈值检测
5抑制孤立的弱边缘

图像轮廓

contours,hierarchy = cv2.findContours(img,mode,methon)#轮廓检测
#绘制轮廓
res = cv2.drawContours(img.copy,contours,-1,(0,0,255),2)
cv2.imshow(res)

在这里插入图片描述在这里插入图片描述
外接矩形

x,y,w,h = cv2.boundingRect(img)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)

模板匹配

cv2.matchTemplate(image, templ, method, result=None, mask=None)
image:待搜索图像
templ:模板图像
result:匹配结果
method:计算匹配程度的方法
method:
CV_TM_SQDIFF 平方差匹配法
CV_TM_CCORR 相关匹配法
CV_TM_CCOEFF 相关系数匹配法 -1~1
CV_TM_SQDIFF_NORMED 归一化平方差匹配法
CV_TM_CCORR_NORMED 归一化相关匹配法
CV_TM_CCOEFF_NORMED 归一化相关系数匹配法

你可能感兴趣的:(opencv_python 基本知识)