- 读取图片
img = cv2.imread("filepath")
cv2.imshow("window",img)
#表示等待
cv2.waitkey(0)
- 灰度图
imggray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("灰度图",imggray)
- rgb
imgrgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
cv2.imshow("rgb",imgrgb)
- 高斯模糊
#高斯模糊
imgBlur = cv2.GaussianBlur(img,(19,19),0)
cv2.imshow("blut",imgBlur)
- 提取轮廓
imgEdge = cv2.Canny(imgBlur,100,100)
cv2.imshow("img edge",imgEdge)
- 膨胀
可以有些时候边缘连不起来,就可以用膨胀算法进行迭代,迭代的次数越多,线就会越粗
kernel = np.ones((5,5),np.uint8)
imgDialation = cv2.dilate(imgEdge,kernel,iterations=13)
- 腐蚀
和上面的膨胀相反,这是让线条变细的操作
kernel = np.ones((5,5),np.uint8)
imgEroded = cv2.erode(imgDialation,kernel,iterations=1)
- resize
重新定义大小
imgSmall = cv2.resize(img,(200,150))
- 裁剪
imgCropped = img[0:200,0:200]
直接通过数组的方式进行裁剪,从上到下,从左到右
- 黑色以及白色
imgBlack = np.zeros((512,512))
imgWhite = np.ones((512,512))
矩阵中,黑色表示0,白色表示1,numpy是个矩阵运算库
- 初始化黑色
imgBlack = np.zeros((512,512,3),np.uint8)
同时初始化了三通道
-
给图片上蓝色
img[:] = 255,0,0
三通道是BGR,想给别的颜色赋值均可自动调节
-
裁剪并赋值
就是裁剪的范围加颜色
-
画线
cv2.line(img,(0,0),(100,100),(255,0,0),3)
在那张图片上画
起点
终点
颜色
粗细
终点是先横再竖
-
画矩形
cv2.rectangle(img,(0,0),(200,300),(0,0,255),2) #表示填充 cv2.rectangle(img,(0,0),(200,300),(0,0,255),cv2.FILLED)
在什么上画
起点
终点
颜色
粗细
-
画圆形
cv2.circle(img,(100,100),30,(0,255,0),cv2.FILLED)
-
写字
cv2.putText(img,"zhangjiarui",(100,100),cv2.FONT_ITALIC,1,(0,123,123),2)
开始的位置
字体
字号
颜色
粗细
-
将图形扶正
pic1 = np.float32([[300,0],[300,400],[0,0],[0,400]]) pic2 = np.float32([[0,0],[400,0],[0,300],[400,300]]) matirx = cv2.getPerspectiveTransform(pic1,pic2) imgOut = cv2.warpPerspective(img,matirx,(400,300))
前面是之前的图片,右边是之后的图片位置,点的位置一定要对应好