• 1.3.OpenCV技能树--第一单元--图像的基础操作(基础篇)


    1.文章内容来源

    1.题目来源:
    2.资料来源:https://edu.csdn.net/skill/opencv/opencv-819f137c35c64f76945bcd7e60d37807?category=657&typeId=20810#___44
    
    • 1
    • 2

    2.图像的基本操作

    2.1.图像加载

    #%%
    #图像显示
    import cv2 
    img = cv2.imread(r"cv.jpg")
    print(type(img))#打印图像类型
    print(img)#打印图像灰度值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2.2.图像显示

    #%%
    #图像显示
    import cv2
    img = cv2.imread(r"cv.jpg")# 加载图像
    #如果图像过大的话可以进行设置
    cv2.namedWindow('Test_Figure', 0)#设定图像    
    cv2.resizeWindow('Test_Figure', 900, 600)   # 自己设定窗口图片的大小
    cv2.imshow("Test_Figure",img)# 图像的显示,也可以创建多个窗口
    cv2.waitKey(0)#等待时间,按任意键终止
    cv2.destroyAllWindows()#销毁窗口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2.3.数据读取

    imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像是什么类型,支持常见的三个参数值
    IMREAD_UNCHANDED(<0) 表示加载原图,不做任何改变
    IMREAD_GRAYSCALE(0) 表示把原图作为灰度图像加载进来
    IMREAD_COLOR(>0) 表示把原图作为 RGB 图像加载进来
    
    • 1
    • 2
    • 3
    • 4
    #%%
    #数据读取
    import cv2
    img = cv2.imread(r"cv.jpg",cv2.IMREAD_GRAYSCALE)#设置为灰色显示
    print(img)#打印灰度矩阵
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    还可以对图片进行输出

    #%%
    #数据读取
    import cv2
    img = cv2.imread(r"cv.jpg",cv2.IMREAD_GRAYSCALE)#设置为灰色显示
    cv2.namedWindow('Test_Figure', 0)#设定图像    
    cv2.resizeWindow('Test_Figure', 900, 600)   # 自己设定窗口图片的大小
    cv2.imshow("Test_Figure",img)# 图像的显示,也可以创建多个窗口
    cv2.waitKey(0)#等待时间,按任意键终止
    cv2.destroyAllWindows()#销毁窗口
    print(img)#打印灰度矩阵
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2.4.截取图像

    #%%
    #截取部分图像
    import cv2
    img = cv2.imread(r"cv.jpg")#加载图像
    cat = img[0:200, 0:200]#截取部分图像
    cv2.imshow("cat_Figure",cat)# 图像的显示,也可以创建多个窗口
    cv2.waitKey(0)#等待时间,按任意键终止
    cv2.destroyAllWindows()#销毁窗口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    2.5.颜色通道提取

    #%%
    #颜色通道提取split()函数
    import cv2
    img = cv2.imread(r"cv.jpg")
    b,g,r = cv2.split(img)
    print(r,g,b)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2.5.1.保留红色处理

    #%%
    #保留红色处理
    import cv2
    img = cv2.imread(r"cv.jpg")
    imgR = img.copy()
    # 注意参数的变化
    imgR[:,:,0] = 0
    imgR[:,:,1] = 0
    cv2.namedWindow('Red Color', 0)#设定图像    
    cv2.resizeWindow('Red Color', 900, 600)   # 自己设定窗口图片的大小
    cv2.imshow('Red Color',imgR)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2.5.2.保留绿色处理

    #%%
    #保留绿色处理
    import cv2
    img = cv2.imread(r"cv.jpg")
    imgG = img.copy()
    # 注意参数的变化
    imgG[:,:,0] = 0
    imgG[:,:,2] = 0
    cv2.namedWindow('Green Color', 0)#设定图像    
    cv2.resizeWindow('Green Color', 900, 600)   # 自己设定窗口图片的大小
    cv2.imshow('Green Color',imgG)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2.5.3.保留蓝色处理

    #%%
    #保留蓝色处理
    import cv2
    img = cv2.imread(r"cv.jpg")
    imgB= img.copy()
    # 注意参数的变化
    imgB[:,:,1] = 0
    imgB[:,:,2] = 0
    cv2.namedWindow('Blue Color', 0)#设定图像    
    cv2.resizeWindow('Blue Color', 900, 600)   # 自己设定窗口图片的大小
    cv2.imshow('Blue Color',imgB)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    3.易错点总结与反思

    总结与反思:
    1.首先需要牢记数据读取的几个参数值,IMREAD_UNCHANDED/IMREAD_GRAYSCALE/IMREAD_COLOR各是什么意思
    2.图像是由高维的连续的灰度值建立而成的。
    3.通过split()函数可以对图像的颜色通过进行一个截取。
    4.图像由RGB三种颜色组成,我们可以只显示一种颜色/两种颜色/三种颜色等等
    5.如何显示/不显示某种颜色呢,就是将色度矩阵的最后一列进行操作,对应的数如下Blue(0),Green(1),Red(2)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    从何跟踪伦敦金最新行情走势?
    鸿蒙 Stage模型-应用组件-配置、UIAbility
    【Linux】TCP的服务端(守护进程) + 客户端
    php实战案例记录(16)php://input输入流
    Unity底层是如何处理C#的
    stft的窗函数设计要求和方法(COLA)
    基于卡尔曼滤波实现行人目标跟踪
    连续仨月霸占牛客榜首,京东T8呕心巨作:700页JVM虚拟机实战手册
    【图论——第七讲】Pirm算法求最小生成树问题及其堆优化
    我让虚拟DOM的diff算法过程动起来了
  • 原文地址:https://blog.csdn.net/m0_71819746/article/details/133593665