数据读取–图像
- cv2.IMREAD_COLOR : 彩色图像
- cv2.IMREAD_GRAYSCALE : 灰度图像
读取图像:img = cv2.imread(‘xxx.jpg’)
显示图像:cv2.imshow(‘image’,img)
显示等待时间:cv2.waitKey(1000) //毫秒级,0表示任意键终止
结束显示窗口:cv2.destroAllWindows()
获取图像的属性:img.shape // 获得RGB类型(h,w,c)数值大小
读取图像时指定第二参数:img = cv2.imread(‘xxx.jpg’,cv2.IMREAD_GRAYSCALE) //灰度图像
图像保存:cv2.imwrite(‘xxx.jng’,img)
图像大小(像素点大小):img.size
图像数据类型:img.dtype
数据读取-视频
- cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如:0,1。
- 如果是视频文件,直接指定好路径即可。
读取视频:vc = cv2.VideoCapture(‘test.mp4’)
读取视频每一帧的图像:循环读取 vc.read()
将每一帧转换成灰度图:cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
截取部分图像数据:
img = cv2.imread(‘cat.jpg’)
cat = img[0:200,0:200] //截取指定位置
cv2_show(‘cat’,cat)
颜色通道提取:
b,g,r = cv2.split(img)
组合颜色:
img = cv2.merge((b,g,r))
边界填充:
cv2.copyMakeBorder(img,top_size,bottom_size,right_size,borderType=cv2.BORDER_REPLICATE)
复制法:
BORDER_REPLICATE:复制法,也就是复制最边缘像素。
BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制。例如:fedcba|abcdefgh|hgfedcb
BORDER-REFLECT_101:反射法,也就是以最边缘像素为轴,对称,例如:gfedcb|abcdefgh|gfedcba
BORDER_WRAP:外包装法,例如:cdefgh|abcdefgh|abcdefg
BORDER-CONSTANT:常量法,常数值填充。
数值计算:
img_cat2 = img_cat = 10 //所有位置进行+10
(ing_cat + img_cat2) //相当于%256
cv2.add(img_cat,img_cat2)//计算的所得数值>255时,取255输出。
图像融合:
-
首先:将两个图像的shape值改为一样:
img_dog = cv2.resize(img_dog,(500,414))//直接修改shape大小
res = cv2.resize(img,(0,0),fx = 3,fy = 2)//可以不设置shape的大小,直接修改长宽比例
-
其次:
res = cv2.addWeighted(img_cay,0.4,img_dog,0.6,0)//一共五个变量:x1,a1,x2,a2,b 。R= a1x1+a2x2+b