import numpy as np
import cv2
def bgr2gray(rgb):
return np.dot(rgb, [0.114, 0.587, 0.299]).astype(np.uint8)
img=np.random.randint(0,256, size=[4,4,3], dtype=np.uint8)
rst=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print("像素点(0,0)直接计算得到的值=",
img[0,0,0]*0.114+img[0,0,1]*0.587+img[0,0,2]*0.299)
print("像素点(0,0)使用公式cv2.cvtColor()转换值=", rst[0,0])
gray=bgr2gray(img)
print('像素点(0,0)通过rgb2gray计算得到的值',gray[0,0])
np.dot()可以计算向量的点积和矩阵乘法
np.dot(a,b),其中a为一维向量,b为一维向量
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([6, 7, 8, 9, 10])
print(np.dot(a, b))
np.dot(a,b)其中a为二维矩阵,b为一维向量。这时b会当作一维矩阵继续计算
import numpy as np
a = np.random.randint(0,10, size = (5,5))
b = np.array([1,2,3,4,5])
print("the shape of a is " + str(a.shape))
print("the shape of b is " + str(b.shape))
print(np.dot(a, b))
一维矩阵和一维向量的区别,一维向量的shape是(5, ), 而一维矩阵的shape是(5, 1), 若两个参数a和b都是一维向量则是计算的点积,但是当其中有一个是矩阵时(包括一维矩阵),dot便进行矩阵乘法运算。所以如果是一个向量和一个矩阵相乘,这个向量会自动转换为一维矩阵进行计算。
np.dot(a ,b), 其中a和b都是二维矩阵,此时dot就是进行的矩阵乘法运算
import numpy as np
a = np.random.randint(0, 10, size = (5, 5))
b = np.random.randint(0, 10, size = (5, 3))
print("the shape of a is " + str(a.shape))
print("the shape of b is " + str(b.shape))
print(np.dot(a, b))
参考文献
opencv色彩空间类型转换(python)_暴风雨中的白杨的博客-CSDN博客_opencv转换类型 python