cv2.imread(filepath,flags)
filepath:要读入图片的完整路径
flags:读入图片的标志
- cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
- cv2.IMREAD_GRAYSCALE:读入灰度图片
- cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
当以cv2.IMREAD_COLOR参数读取灰度图时,会使三个通道都取像素点对应的灰度值
img = cv2.imread('car.jpg',cv2.IMREAD_COLOR)
print(,img.shape) # (480, 680, 3) 先高 后宽
cv2.imwrite(filename,img,params)
params:
cv2.CV_IMWRITE_JPEG_QUALITY 设置.jpeg或.jpg图片的质量(0–100),默认95
cv2.CV_IMWRITE_WEBP_QUALITY 设置.webp图片的质量(0–100)
cv2.CV_IMWRITE_PNG_COMPRESSION 设置.png图片的压缩比(0–9),默认为3
cv2.imwrite(prefix+"_r.jpg", img) # 默认质量 95
cv2.imwrite(prefix+"_r.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY),100]) # cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst
m=400*img.shape[0]/img.shape[1] # 高比宽*400,即等比缩放到宽400时的高
img=cv2.resize(img,(400,int(m)),interpolation=cv2.INTER_CUBIC)
plt.imshow+cv2.imread
opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式,使用plt.imshow显示cv2.imread得到的图片,需先重新合成图片通道,否则会变色儿。
img = cv2.imread(filename)
b,g,r = cv2.split(img)
img = cv2.merge([r,g,b])
plt.imshow(img)
numpy.clip(a, a_min, a_max, out=None)
设置矩阵a的元素值范围在min和max之间,小于min的设为min,大于max的设为max
滤波
img = cv2.imdecode(np.fromfile('cc.jpg', dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
print(img.dtype)
show_img(img)
'''均值滤波'''
kernel = np.ones((3, 3), np.float32) / 9
dst = cv2.filter2D(img, -1, kernel)
dst=cv2.blur(img,(3,3)) # 同上
# show_img(dst)
'''方框滤波'''
dst=cv2.boxFilter(img, -1, (3,3)) # 当normalize为True的时候,方框滤波就是均值滤波,为False即求区域和
# show_img(dst)
'''高斯滤波'''
dst= cv2.GaussianBlur(img, (3, 3), 0)
# show_img(dst)
'''中值滤波'''
dst = cv2.medianBlur(img, 3)
# show_img(dst)
'''双边滤波'''
dst = cv2.bilateralFilter(img, 9, 75, 75)
# show_img(dst)