上个文章讲了opencv的安装,以及读写照片,显示照片,图片的属性。
如果没有看过的,下面是链接初学opencv 1
1.视频的读取
和图片一样,视频也可以被电脑获取,处理出我们想要的东西。
这个截图是我从电脑里读取的,他是这次我们处理的视频。
这个人手上拿了一个绿色的光盘…或者碟子???这都无所谓,主要的是我们要知道它能够干什么。
opencv的作用就是可以把能够突出的某种颜色展示出来,比如说我们把其他颜色都变成黑色,然后把绿色变成白色,那么是不是就可以更加明显的看出来了?
代码如下:
import cv2 as cv
import numpy as np
def extrace_object_demo():
capture = cv.VideoCapture("C:/Users/dahula/Desktop/lalal.mp4")
while(True):
ret, frame = capture.read()
if ret == 0:
break
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower_hsv = np.array([37,43,46])
upper_hsv = np.array([77,77,255])
mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
cv.imshow("video",frame)
cv.imshow("mask",mask)
c = cv.waitKey(40)
if c==27:
break
extrace_object_demo()
cv.waitKey(0)
cv.destroyAllWindows()
然后显示结果为
大家可以清晰的看到,他手中的白色光盘。
我解释一下这里的
lower_hsv = np.array([37,43,46])
upper_hsv = np.array([77,77,255])
这就是色彩空间转换api,只要找到对应的颜色,申请两个数组,一个放最大值,一个放最小值,然后将对应的数字写入数组,便可以实现色彩转换。色彩转换是opencv很常见的一个重要工具。具体的会在接下来的文章中做出解释。
2.通道分离与合并
上篇博客讲到,图片的属性有三个,其中之一就是通道,而每个像素点有3个通道,我们的通道分离与合并就是从这样。
b,g,r = i=cv.split(src)
cv.imshow("bule",b)
cv.imshow("green",g)
cv.imshow("red",r)
上面的代码是通道分离
src = cv.merge([b,g,r])#对所有通道进行合成
这就是合成结果,当然,我们也可以对三个通道中的一个通道进行更改,看看得出来的图像什么样子吧!
这是我们将red的通道值改为了0,所得到的图片
src[:,:,2] = 0
当然也可以对其他的通道值进行更改,这里就不做过多解释!
3.总结
这次总结的opencv知识是偏向于实践的,所以大家可以下去自己尝试一下,然后会有一个更深的了解。接下来我会继续对opencv这里的知识点做总结的,到最后还有一个实战案例,敬请期待!