数据读取-图像
###图像读取
img=cv2.imread('imag.jpg')
###图像显示
cv2.imshow('imag',img)
###读取灰度图
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)
#cv2.IMREAD_COLOR:彩色图像
#cv2.IMREAD_GRAYSCALE:灰度图像
###转灰度图
cv2.cvtColor(color_img,cv2.COLOR_RGB2GRAY)
###函数
img.shape#获取(高度,宽度,通道数)
img.size#获取像素点个数
img.dtype#数据类型
###等待时间,毫秒级,0表示任意键终止
cv2.waitKey(0)
cv2.destroyAllWindows()
数据读取-视频
###读取
vc = cv2.VideoCapture('test.mp4')
###视频打开情况
open,frame=vc.read()#open是布尔值判断当前帧是否正确读取,frame是当前帧的三维数组
###截取部分图像数据
img'=img[0:50,0:200]
###颜色通道提取
b,g,r=cv2.split(img)
###只保留R通道
# 0:B 1:G 2:R
img[:,:,0]=0
img[:,:,1]=0
边界填充
top_size,bottom_size,left_size,right_size = (50,50,50,50)#上下左右分别填充的大小
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
#### borderType按照什么方式填充,填充方式如下:
#BORDER_REPLICATE:复制法,也就是复制最边缘像素。
#BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
#BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
#BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
#BORDER_CONSTANT:常量法,常数值填充
数值计算
###像素值相加超过255得到的是对256的余,如294-->38
(img_cat + img_cat2)[:5,:,0]
###add函数,越界取255,如294-->255
cv2.add(img_cat,img_cat2)
图像融合
图像融合首先要有相同的图像大小
###resize
###将图像设置为指定大小,resize(img,(宽度,高度))
img_dog = cv2.resize(img_dog, (500, 414))
img_cat = cv2.resize(img_cat, (500, 414))
###将图像按比增大
res = cv2.resize(img, (0, 0), fx=4, fy=4)#横向纵向各增大4倍
res = cv2.resize(img, (0, 0), fx=1, fy=3)#横向增为1倍纵向3倍
###融合,下式相当于0.4*cat+0.6*dog+0, 0是提高的亮度
res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)
标签:img,cv2,cat,图像,基本操作,###,size
From: https://www.cnblogs.com/wxy214/p/16856820.html