OpenCv
1.图像的读取
import cv2
img = cv2.imread('car.jpg')
print(type(img))
opencv中读取图像的函数是cv2.imread()
- filename:文件的路径
- flags:指定读写的读取方式
flags是可选参数:
- cv2.IMREAD_COLOR:默认参数,以彩色图像的方式加载图像,忽略任何透明度。(可用 1)
- cv2.IMREAD_GRAYSCALE:以灰度图像的方式加载图像。(可用 0)
- cv2.IMREAD_UNCHANGED以原始图像的方式加载图像。(可用-1)
注意:OpenCv以彩色图像读取的时候是BGR
2.图像的显示
import cv2
img = cv2.imread('../png/01_cat.jpg' , 1)
cv2.imshow('cat',img)
# 等待时间,毫秒级,0表示任意键终止,5000ms表示5s
cv2.waitKey(0)
# 销毁图像窗口
cv2.destroyAllWindows()
- winname:展示图像的窗口名字
- mat:所展示的图像
这里我们封装一个函数,方便展示图像
# 绘图显示(封装函数)
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
下文所用的的cv_show(),就是这边封装的函数。
3.图像的保存
img = cv2.imread('cat01.jpg' , 1)
cv2.imwrite('cat02.jpg',img)
- filename:保存的路径。
- img:保存的图像。
- params:用于指定保存图像的特定格式参数。它可以是 JPEG、PNG 等图像格式的特定参数。
4.视频处理
vc = cv2.VideoCapture(0)
if vc.isOpened():
open,img = vc.read()# 这里的 vc.read() 相当于读取图像的第一帧
# 若循环不断的执行 vc.read,则不断的读取第二帧、第三帧....
#open:是否被打开 img:图像
cv_show('img',img)
cv2.VideoCapture
函数可以捕获摄像头,或读取视频文件。
cv2.VideoCapture 函数入口参数:
- 用数字来控制不同的设备(摄像头),例如 0、1。
- 如果是视频文件,直接指定好路径即可。
5.ROI区域
5.1 位置提取
img = cv2.imread('cat.jpg')
cat = img[0:200,0:200] # 选择图片感兴趣的区域
cv_show('cat',cat)
切片显示图片中左上角的一个 200x200 大小的区域,
5.2 通道提取
img = cv2.imread('cat.jpg')
b,g,r = cv2.split(img)
cv_show('cat_b',b)
print('b.shape:',b.shape) # B通道,单通道,灰度图
cv_show('cat_g',g)
print('g.shape:',g.shape) # G通道,单通道,灰度图
cv_show('cat_r',r)
print('r.shape:',r.shape) # R通道,单通道,灰度图
img = cv2.merge((b,g,r))
print('img.shape:',img.shape) # 3 通道,彩色图
6.边界填充
img = cv2.imread('cat.jpg')
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