import cv2 import matplotlib.pyplot as plt import numpy as np %matplotlib inline img=cv2.imread(r"C:UsersAdminDesktopname.png")
img#显示图像
cv2.imshow("image",img)
cv2.waitKey(0)#等待时间,K要大写,0表示按任意键终止
cv2.destroyAllWindows()#关闭窗口
函数
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img.shape
(433, 453, 3)执行灰度图
img=cv2.imread(r"C:UsersAdminDesktopname.png",cv2.IMREAD_GRAYSCALE)
cv_show('image',img)
在这里插入图片描述
保存cv2.imwrite(r"C:UsersAdminDesktopname.png",img)
True读视频
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
vc=cv2.VideoCapture(r'F:重要文件资料毕业文件videosnow.mp4')
if vc.isOpened():
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)
cv2.imshow('result',gray)
if cv2.waitKey(10)&0xFF ==27:#0xFF按esc键盘
break
vc.release()
cv2.destroyAllWindows()
# 保留BGR中一个
```python
# 保留BGR中一个
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img=cv2.imread(r"C:UsersAdminDesktopname.png")
cpy=img.copy()
cpy[:,:,0]=0#注意格式
cpy[:,:,1]=0#注意格式,BGR=012
cv_show('result',cpy)
边界填充
top_size,bottom_size,left_size,right_size=(100,100,100,100)
replicate=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)#复制法
reflect=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT)#反射法
reflect101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT101)#反射法,对称反射
wrap=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)#外包装法
constant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)#常量法,常数值填充
import matplotlib.pyplot as plt
plt.subplot(231),plt.imshow(img,'gray'),plt.title('ORIGINAL')
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect101,'gray'),plt.title('REFLECT101')
plt.subplot(234),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(235),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.subplot(236),plt.imshow(reflect,'gray'),plt.title('REFLECT')
图像融合
import cv2 import matplotlib.pyplot as plt import numpy as np %matplotlib inline img2=cv2.imread(r"C:UsersAdminDesktopname.png") img=cv2.imread(r"C:UsersAdminDesktopname.png") img.shape
(433, 453, 3)
img2=cv2.resize(img2,(453,433)) img2.shape
(433, 453, 3)
res=cv2.addWeighted(img,0.3,img2,0.6,0) plt.imshow(res)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8nZJ5U1-1648438684313)(output_21_1.png)]
梯度处理 金字塔name=cv2.imread(r"C:UsersAdminDesktopname.png")
up=cv2.pyrUp(name)
down_up=cv2.pyrDown(up)
print(name.shape)
print(down_up.shape)
cv_show('res',np.hstack((name,down_up)))#向上采样和向下采样,下-上更模糊
(433, 453, 3) (433, 453, 3) 拉普拉斯金字塔(简单了解)
i_i=name-down_up
print(i_i.shape)
cv2.imshow('i_i',i_i)
cv2.waitKey(0)
cv2.destroyAllWindows()
(433, 453, 3) 为了更高准确率,使用二值图像
gray=cv2.cvtColor(name,cv2.COLOR_BGR2GRAY)
ret,thresh=cv2.threshold(gray,125,255,cv2.THRESH_BINARY)
cv2.imshow('thresh',thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
binary,contours=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)



