opencv教程(基于python)----图象运算

图象的运算主要有加减,位运算等。对于图象的加减来说注意图象的大小和数据类型一样。

图象混合主要是addWeighted函数,形式为cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])

scr1是第一个图片,alpha是透明度;src2是第二个图片,beta是透明度。两个通名都加起来是1.后面的gamma有点玄学默认为0就好

import cv2
import numpy as np
import matplotlib.pyplot as plt
#img=cv2.imread('C:/Users/dell/Desktop/cos.jpg')
img1=cv2.imread('C:/Users/dell/Desktop/c1.jpg')
img2=cv2.imread('C:/Users/dell/Desktop/c2.jpg')
dst=cv2.addWeighted(img1,0.1,img2,0.9,0)
cv2.imshow('image',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()


图象的按位运算函数与CV2.bitwise_and和运算,CV2.bitewise_or或运算,CV2.bitewise_not非运算,CV2.bitewise_xor异或运算

就以和运算为例cv2.bitwise_and(src1, src2, dst=None, mask = None)。src1和src2是图象,可以一样;dst是返回的数据,通常可以省略;mask是要选定的区域(不处理这些,而处理其他的),没有的话可以忽略。函数实际上就是对图象的二进制数据进行与或非操作。具体的应用结合了下一小节一起展示了出来


opencv的图像颜色转换主要有两种:要么是BGR转化Gray,或者BGR转化HSV(色相,饱和度,明度)

其函数调用格式为CV2.cvtColor(img,flags)。

在一些简单的目标追中上可以直接利用物体的颜色来实现,虽然这样实时性比价好,但是精度还是比较低的。

(至于为什么精度低,原理可以参考机器学习的PCA理论)

下面的代码实现了利用电脑摄像头捕捉蓝色的物体

import cv2
import numpy as np
import matplotlib.pyplot as plt
#img=cv2.imread('C:/Users/dell/Desktop/cos.jpg')
cap=cv2.VideoCapture(0)
while(1):
    rect,frame=cap.read()
    hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    #设定蓝色阈值
    lower_blue=np.array([110,50,50])
    upper_blue=np.array([130,255,255])
    #根据阈值构建模型
    mask=cv2.inRange(hsv,lower_blue,upper_blue)
    #对图象和掩模进行位运算
    res=cv2.bitwise_and(frame,frame,mask=mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k=cv2.waitKey(5)&0xFF
    if k==27:
        break
cv2.destroyAllWindows()

你可能感兴趣的:(opencv教程(基于python)----图象运算)