img = cv2.imread('pic.jpg')#读图像
#封装函数
def cv_show(name,img):cv2.imshow('image',img)#显示图像cv2.waitKey(0)#显示时间cv2.destroyWindow()
#读灰度图
img = cv2.imread('pic.jpg',cv2.IMREAD_GRAYSCALE)
#保存
cv2.imwrite('name',img)
#读视频
vc = cv2.VideoCapture('name')
#检查是否打开
if vc.isOpened():open , frame = vc.read()
else:open = False
#遍历视频
while open:ret ,frame = vc.read()if frame is None:breakif ret == True:gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)cv2.imshow('result',gray)if cv2.waitKey(1) &0xFF==27:break
vc.release()
cv2.destroyWindow()
#截取图像
img = cv2.imread('name')
pic = img[0:200,0:200]
#颜色通道提取
b,g,r = cv2.split(img)
#边界填充
cv2.copyMakeBorder(src,top,bottom,left,right,cv2.borderType)
src : 输入的图片
top, bottom, left, right :相应方向上的边框宽度
borderType:定义要添加边框的类型,它可以是以下的一种:
cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射,类似于gfedcba|abcdefgh|hgfedcba
cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同,类似于gfedcb|abcdefgh|gfedcba
cv2.BORDER_REPLICATE:使用最边界的像素值代替,类似于aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP:不知道怎么解释,直接看吧,cdefgh|abcdefgh|abcdefg
value:如果borderType为cv2.BORDER_CONSTANT时需要填充的常数值。
#数值计算
img2 = img+10 c#每个像素+10
imag3 = img2+img1#每个像素点值相加,超出取余
cv2.add(img2,img3)
cv2.resize(img,(x,y))
cv2.resize(img,fx=3,fy=4)
cv2.addWeighted(img1,0.1,img2,0.2,0)
#阈值
cv2.threshold(src,thres,maxval,type)
src: 输入源图像(灰度图)。
thresh:阈值,用于对像素值进行分类。
maxval:最大值(分配给超过阈值的像素值的最大值)。
type:阈值类型,OpenCV提供了由函数的第四个参数给出的不同类型的阈值。cv.THRESH_BINARY # 小于阈值的像素点置0,大于阈值的像素点置maxval; cv.THRESH_BINARY_INV # 此时小于阈值的像素点置maxval,大于阈值的像素点置0;cv.THRESH_TRUNC # 此时小于阈值的像素点保持原数值,大于阈值的像素点置阈值; cv.THRESH_TOZERO # 此时小于阈值的像素点置0,大于阈值的像素点保持原数值; cv.THRESH_TOZERO_INV # 此时小于阈值的像素点保持原数值,大于阈值的像素点置0。
#图片平滑操作
blur = cv2.blur(img,(3,3))#均值滤波
box = cv2.boxFilter(img,-1,(3,3),normalize=True)#方框滤波
aussian = cv2.GaussianBlur(img,(5,5),1)#高斯滤波
median = cv2.medianBlur(img,5)
res = np.vstack();#展示所有