Python之OpenCV学习Day01--图像(加载、展示、写入)、像素运算(算数运算、逻辑运算)、常见色彩空间模式

#pip install opencv-python
import cv2 as cv
'''
import cv2 as cv
#图像的加载、显示、写入,视频的读取
def getImageInfo(image):
    print(type(image))
    print(image.shape)#width、height、通道数
    print(image.size)#像素数据
    print(image.dtype)#每个通道所占的位数,无符号的int8位
def videoDemo():
    capture=cv.VideoCapture(0)
    while(True):
        ret,frame=capture.read()
        frame=cv.flip(frame,1)#镜像变化图像,上下-1
        cv.imshow("viedo",frame)
        c=cv.waitKey(50)
        if c==27:
            break
src=cv.imread("E:/OpenCVTests/472309f790529822cb728e77d4ca7bcb0b46d4c5.png")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
getImageInfo(src)
gray=cv.cvtColor(src,cv.COLOR_BGR2GRAY)#灰度图像
cv.imwrite("E:/OpenCVTests/apple.png",gray)
#videoDemo()
cv.waitKey(0)
cv.destroyAllWindows()#释放所有内存
'''
'''

像素运算:算数运算+逻辑运算
    要求:进行运算的两幅图像大小、类型必须一致
    算数运算:加、减、乘、除,可以调节图像的对比度、亮度
    逻辑运算:与、或、非,应用;遮罩    
'''
'''
#白色RGB均为255,黑色均为0,中间颜色进行加减,范围为0-255,0+任何值等于其本身,255+任何值不变
def addDemo(m1,m2):
    dst=cv.add(m1,m2)
    cv.imshow("addDemo",dst)#加法运算:白色RGB均为255,黑色均为0,中间颜色进行加减,范围为0-255,0+任何值等于其本身,255+任何值不变
def subtractDemo(m1,m2):
    dst=cv.subtract(m1,m2)
    cv.imshow("substractDemo",dst)
def divideDemo(m1,m2):
    dst=cv.divide(m1,m2)
    cv.imshow("divideDemo",dst)
def multiplyDemo(m1,m2):
    dst=cv.multiply(m1,m2)
    cv.imshow("multiplyDemo",dst)
def inverse(m):#像素取反
    dst=cv.bitwise_not(m)
    cv.imshow("inverse",dst)

src1=cv.imread("E:\opencv-4.0.1-vc14_vc15\opencv-4.1.0-vc14_vc15\opencv\sources\samples\data\WindowsLogo.jpg")
cv.namedWindow("src1",cv.WINDOW_AUTOSIZE)
cv.imshow("src1",src1)
src2=cv.imread("E:\opencv-4.0.1-vc14_vc15\opencv-4.1.0-vc14_vc15\opencv\sources\samples\data\LinuxLogo.jpg")
cv.namedWindow("src2",cv.WINDOW_AUTOSIZE)
cv.imshow("src2",src2)
t1=cv.getTickCount()
addDemo(src1,src2)
subtractDemo(src2,src1)
divideDemo(src1,src2)
multiplyDemo(src1,src2)
inverse(src1)
t2=cv.getTickCount()
time=(t2-t1)/cv.getTickFrequency()#调用的时间消耗计算
print("time{:} ms".format(time))
cv.waitKey(0)
cv.destroyAllWindows()#释放所有内存
'''
'''
mean(x)求RGB均值
meanStdDev()方差
'''

#常见色彩空间:RGB、HSV、HIS、YCrCB、YUV
def colorSpace(m):
    gray=cv.cvtColor(m,cv.COLOR_BGR2GRAY)
    cv.imshow("gray",gray)
    hsv = cv.cvtColor(m, cv.COLOR_BGR2HSV)
    cv.imshow("hsv", hsv)
    yuv= cv.cvtColor(m, cv.COLOR_BGR2YUV)
    cv.imshow("yuv", yuv)
src=cv.imread("E:\opencv-4.0.1-vc14_vc15\opencv-4.1.0-vc14_vc15\opencv\sources\samples\data/apple.jpg")
colorSpace(src)
cv.waitKey(0)
cv.destroyAllWindows()
'''
RGB:一般来说,电脑,电视机等是利用三个电子枪分别发射R分量,G分量,B分量的电子束,以此来激发屏幕上的RGB三种颜色的荧光粉,从而发出不同颜色、不同亮度的像素、进而组成了一幅图像;
    很明显,RGB颜色空间利用了物理学中的三原色叠加从而组成产生各种不同颜色的原理。
HSV:色相、饱和度、亮度
    hue表示颜色的相位角,取值范围是0---360;

    S表示颜色的饱和度:S为一比例值,范围从0到255,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率,通俗点讲,S表示的是某种颜色的“纯度”, S取值越大,表示色彩越纯,取值越小,表示色彩越灰。

    V表示色彩的明亮程度:范围从0到255。V等于0表示圆锥的底部定点,也就是黑色,V等于1表示圆锥的顶面,当V=1并且S=0时表示纯白色;
HSB 为 色相,饱和度,明度,
HSL 为 色相,饱和度,亮度,
HSV 为色相,饱和度,明度。
YUV 色彩空间
    YUV,是一种颜色编码方法。常使用在各个视频处理组件中。 YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠
    “Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度
Lab:
    CIELab颜色模型是基于人对颜色的感觉。Lab中的数值描述正常视力的人能够看到的所有颜色。因为 Lab 描述的是颜色的显示方式,而不是设备(如显示器、打印机)生成颜色所需的特定色料的数量,所以 Lab 被视为与设备无关的颜色模型。
          
          各色彩空间的相互转换-----------https://blog.csdn.net/u011808673/article/details/83177992
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值