计算机视觉入门(一)

时间: 2023-07-11 admin IT培训

计算机视觉入门(一)

计算机视觉入门(一)

1.图片的读取
cv2.IMREAD_COLOR:彩色图像
cv2.IMREAD_GRAYSCALE:灰度图像

imgs=cv2.imread("dog.jpg")
imgs=cv2.cvtColor(imgs,cv2.COLOR_BGR2RGB)
print(imgs)
plt.imshow(imgs)
plt.show()

2.视频中读取图片
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备

vc=cv2.VideoCapture("E:\\Pec\\ved.mp4")
#检测是否能打开
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,cv.COLOR_BGR2GRAY)cv2.imshow('result',gray)if cv2.waitKey(10) & 0xFF==27:break
vc.release()
cv.destroyAllWindows()

3.截取图片的部分范围

#截取部分图像数据(ROI)
img=cv2.imread('cat.jpg')
#截取自己想要的切片
imgs=img[100:300,0:200]
plt.imshow(imgs)
plt.show()

4.分离颜色通道

#颜色通道提取
img=cv2.imread('dog.jpg')
b,g,r=cv2.split(img)
print(r.shape)
#将分离的颜色通道再组合
img=cv2.merge((b,g,r))
print(img.shape)
#只保留R通道
cur_img=img.copy()
cur_img[:,:,0]=0 #取所有区域,把B设置0
cur_img[:,:,1]=0 #取所有区域,把G设置0
plt.imshow(cur_img)
plt.show()#只保留G通道
cur_img=img.copy()
cur_img[:,:,0]=0
cur_img[:,:,2]=0
plt.imshow(cur_img)
plt.show()#只保留B通道
cur_img=img.copy()
cur_img[:,:,1]=0
cur_img[:,:,2]=0
plt.imshow(cur_img)
plt.show()


5.边界填充

  • BORDER_REPLICATE:复制法,复制最边缘像素

  • BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制,如:fedcba|abcdefgh|hgfedcb

  • BORDER_REFLECT_101:反射法,以最边缘像素为轴,如:gfedcb|abcdefgh|gfedcba

  • BORDER_WRAP:外包装法,如:cdefgh|abcdefgh|abcdefg

  • BORDER_CONSTANT:常量法,常数填充

top_size,bottom_size,left_size,right_size=(50,50,50,50)
replicate=cv2.copyMakeBorder(imgs,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(imgs,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(imgs,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT_101)
wrapp = cv2.copyMakeBorder(imgs,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(imgs,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_CONSTANT,value=0)
plt.subplot(231),plt.imshow(imgs,'gray'),plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrapp),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant),plt.title('CONSTANT')
plt.show()


6.图像融合

img_cat=cv2.imread("cat.jpg")
print(img_cat.shape)
print(imgs.shape)
#改变图像的大小
img_cat = cv2.resize(img_cat, (1080, 675))
print(img_cat.shape)
# #图像融合
img=cv2.addWeighted(img_cat,0.4,imgs,0.6,0)
print(img)
plt.imshow(img)
plt.show()


7.图像缩放

#将图像按要求的倍数缩放
img=cv2.resize(imgs,(0,0),fx=1,fy=3)
print(img)
plt.imshow(img)
plt.show()