导入模块和cv_show() 通用功能
import cv2#默认bgr
import matplotlib.pyplot as plt
import numpy
#plt.show()
#test图片
way = 'C:\\Users\\ZKY\\Desktop\\images\\'
img = cv2.imread(way+'1.jpg')
#
def cv_show(image):
cv2.imshow('',image)
cv2.waitKey(0)
打开一张图片:
img = cv2.imread(way+'1.jpg')
# print(img)
cv2.imshow('',img)#展示图片窗口
cv2.waitKey(0)#窗口停留时间#0表示一直停留
cv2.destroyAllWindows()
查看要调用的属性 shape:
print(img.shape)#(1200, 1920, 3(rgb彩色图))(h,w,c)
img = cv2.imread('C:\\Users\\Administrator\\Desktop\\1.jpg',cv2.IMREAD_GRAYSCALE)#灰度模式 (750, 1200)
cv2.imshow('',img)#展示图片窗口
cv2.waitKey(0)#窗口停留时间#0表示一直停留
cv2.destroyAllWindows()
print(img.shape)
cv2.imwrite('C:\\Users\\Administrator\\Desktop\\2(1).png',img)
print(img.size)#计算尺寸
视频读取:
vc = cv2.VideoCapture('C:\\Users\\Administrator\\Desktop\\test.mp4')
if vc.isOpened():#是否打开 TRUE or False 布尔值
open, frame = vc.read()#一帧一帧读取
else:
open = False
while open:
ret, frame = vc.read()#
if frame is None:
break
if ret ==True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#convert+color = cvt
cv2.imshow('result',gray)
if cv2.waitKey(5) & 0xFF == 27:#十六进制数,代表255,其中f代表15
break
vc.release()
cv2.destroyWindow()
截取部分图像数据:
img = cv2.imread(way+'1.jpg')
mn = img[0:473,308:780]#纵向,横向
cv2.imshow('',mn)
cv2.waitKey(0)
颜色通道提取:
b,g,r = cv2.split(img)
print(b.shape)
print(g.shape)
print(r.shape)
img = cv2.merge((b,g,r))#还原操作merge
print(img.shape)
cv2.imshow('',img)
cv2.waitKey(0)
通过以下指令去除某个通道:
cur_img = img.copy()
cur_img[:,:,0] = 0#把其它通道的值改为0
cur_img[:,:,1] = 0#让 0 和 1 通道的值都为0
cv_show(cur_img)
边界填充:
top_size,bottom_size,left_size,right_size = (100,100,100,100)
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)#其中一种填充方法
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.show()
数值计算:
mn1 = img
print(mn1[:5,:,1])# :后表示此通道显示多少个值
mn = mn1 + 30#只能表达0~255之间的值
print(mn[:,:,1])
cv_show(mn1)#得到一张阴间图片
cv_show(mn)#得到一张阴间图片
图像融合:
mn1 = img
mn2 = img2
print(mn1.shape,mn2.shape)
mn1 = cv2.resize(mn1,(1600,900))#变换目标大小的方法 要反着写 也不知道为啥
mn = mn1 + mn2#直接运行会报错 因为图片大小不一致
# mn2 = cv2.resize(mn2,(0,0),fx = 3,fy = 1)#第二种方法 直接变换倍数 前两个数指定为0
print(mn1.shape,mn2.shape)
cv_show(mn1)
cv_show(mn2)
res = cv2.addWeighted(mn1,0.8,mn2,0.2,0)#(第一张图,此图的系数,第二张,系数,提亮系数)
res = cv2.resize(res,(0,0),fx = 0.5,fy = 0.5)
# mn =mn1 + mn2
cv_show(res)#得到一张阴间图片
改变颜色 ——灰度图:
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('',img_gray)
cv2.waitKey(0)
# 读取灰度图
# img = cv2.imread(img,0)