Opencv学习笔记(一)图像基本操作

0、导入模块

import cv2 #opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np 
%matplotlib inline 

1、数据读取-图像

读取彩色或者灰度图像

img=cv2.imread('name.jpg',cv2.IMREAD_COLOR)#彩色图像
img=cv2.imread('name.jpg',cv2.IMREAD_GRAYSCALE)#灰度图像
cv2.imshow('name',img)#显示照片
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('name',img)#保存图片

2、数据读取-视频

cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果是视频文件,直接指定好路径即可。

vc=cv2.VideoCapture('name.mp4')#读取视频文件
if vc.isOpened():#检查是否打开视频文件
    open,frame=vc.read()
else:
    open=Flase
while open:#显示灰度视频
    ret,frame=vc.read()
    if ret==True:
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    cv2.imshow('name',gray)
    if cv2.waitKey(100) & 0xFF==27:#按下'Esc'退出
        break
vc.release()
cv2.destroyAllWindows()

3、截取部分图像数据

name=img[0:50,0:200]#截取X:0-50,Y:0-200像素的图片

4、颜色通道提取

b,g,r=cv2.split(img)
img=cv2.merge((b,g,r))
cur_img=img.copy#只保留R
cur_img[:,:,0]=0
cur_img[:,:,1]=0

cur_img=img.copy#只保留G
cur_img[:,:,0]=0
cur_img[:,:,2]=0

cur_img=img.copy#只保留B
cur_img[:,:,1]=0
cur_img[:,:,2]=0

5、边界填充

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)#复制法,也就是复制最边缘像素。
reflect=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)#反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb 
reflect_101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)#反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
wrap=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)#外包装法cdefgh|abcdefgh|abcdefg
constant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)#常量法,常数值填充。

6、数值计算

图像宽高像素一致可以相加减
直接相加,对应像素点数值大于255时,得到该点减去256后的数值
使用cv2.add(img_1,img_2)相加,对应像素点大于255时,一律置255

7、图像融合

图像进行融合前,需要保证图片的宽高像素一致,因此需要对图片进行重置

img_dog=cv2.resize(img_dog,(500,414))#把图片大小重置为宽500高414
res=cv2.addWeight(img_cat,0.4,img_dog,0.6,0)#按比例进行融合
res=cv2.resize(img,(0,0),fx=3,fy=2)#图片宽度放大3倍,高度放大2倍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值