python环境:
版本:3.6.3
下载连接:https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64.exe
opencv环境:
版本:3.4.1.15
下载链接:https://pypi.tuna.tsinghua.edu.cn/simple/
opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl
opencv_contrib_python-3.4.1.15-cp36-cp36m-win_amd64.whl
1 图片的读取、展示、保存
""" 读取图片 cv2.imread(filename, flags=None) filename:图片名 flags:读取模式 cv2.IMREAD_COLOR 彩色图片 cv2.IMREAD_GRAYSCALE 灰色图片 """ img = cv2.imread('cat.jpg') # 默认为彩色图片 """ 展示图片 cv2.imshow(winname, img) winname:展示窗口名 img:图片 """ cv2.imshow('cat', img) cv2.waitKey(0) # 展示图片时间(毫秒),若为0,则无时间限制 cv2.destroyAllWindows() """ 保存图片 cv2.imwrite(filename, img) filename:保存文件名 """ cv2.imwrite('newcat.jpg', img)
2 图片的截取、拉伸
# 图片截取 img[0:50, 0:200] # 截取左上角坐标为(0,0),竖直距离50,水平距离200 """ 图片拉伸 resize(src, dsize, dst=None, fx=None, fy=None) src:图片 dsize:图片拉伸后的shape fx,fy:若dsize为(0,0),则按照水平拉伸至fx倍,竖直拉伸至fy倍 """ img = cv2.resize(img, (100, 500)) img = cv2.resize(img, (0, 0), fx= 0.6, fy=0.6)
3 图片的填充
""" 图片填充 copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None) src:图片 top,bottom,left,right:四个方向延申的长度 borderType:延申模式 cv2.BORDER_REPLICATE:复制边缘像素 cv2.BORDER_REFLECT:反射法 gfedcba|abcdefg|gfedcba cv2.BORDER_REFLECT_101:反射法 gfedcb|abcdefg|fedcba cv2.BORDER_WRAP:外包装 abcdefg|abcdefg|abcdefg cv2.BORDER_CONSTANT:常量法,常数填充 value=常数 """ img = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_REFLECT_101)
4 图片三色的分离、合并
# 彩色图片GBR分离与合并 b, g, r = cv2.split(img) # opencv的三色是按照BGR来排列 img = cv2.merge((b,g,r))
5 图片权重合成
# 两张图片按照像素权重合并 img = cv2.addWeighted(img1, 0.4, img2, 0.6, 0) # img = img1*0.4 + img2*0.6 + 0
6 图片颜色空间转换
""" 图片颜色空间转换 cvtColor(src, code) src:图片 code:转换成何种格式 cv2.COLOR_BGR2RGB:将BGR格式转换成RGB格式 cv2.COLOR_BGR2GRAY:将BGR格式转换成灰度图片 """ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
7 图片阈值操作
""" 阈值操作 ret, thresh = cv2.threshold(src, thresh, maxval, type) ret:阈值(float) thresh:输出图片 src:输入图片 thresh:阈值 maxval:像素大于阈值(小于阈值)时重新赋予的新值 type:模式 cv2.THRESH_BINARY:超过阈值的数,重新赋值maxval,其他的赋值0 cv2.THRESH_BINARY_INV:cv2.THRESH_BINARY取反 cv2.THRESH_TOZERO:小于阈值的重新赋0,大于的不动 cv2.THRESH_TOZERO_INV:cv2.THRESH_TOZERO取反 cv2.THRESH_TRUNC:大于阈值的重新赋值为阈值 """ ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)