• python-opencv 培训课程作业


    python-opencv 培训课程作业

    作业一:
    第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示

    第二步:彩图 -> 灰度图
    第三步:反转图像:最大图像灰度值减去原图像,即可得到反转的图像

    第四步:用 plt 对比展示原图、灰度图、反转图 plt.subplot()

    import os
    import cv2
    import  matplotlib.pyplot as plt
    import numpy as np
    #默认加载彩图
    path=r'flower.jpg'
    
    # imread(path,way)
    #way=0 灰度图。way=1 彩图
    #默认彩图
    
    #cv2.COLOR_BGR2GRAY
    
    #cv2.COLOR_BGR2RGB
    #cv2.COLOR_BGR2HSV,HSV-色调、饱和度、亮度
    
    
    def cv_show(name,img):
        cv2.imshow(name,img)
        #cv2.waitKey(0),接收0,表示窗口暂停
        cv2.waitKey(0)
        #销毁所有窗口
        cv2.destroyAllWindows()
    # 第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示
    img=cv2.imread(path)
    
    cv_show('flower',img)
    
    # 彩图 -> 灰度图
    img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    
    # 反转图像:最大图像灰度值减去原图像,即可得到反转的图像
    
    max_gray_value=img_gray.max()
    print(max_gray_value)
    
    covert_img=max_gray_value-img
    
    # 用 plt 对比展示原图、灰度图、反转图 plt.subplot()
    
    plt.subplot(131)
    img = img[:,:, ::-1]
    plt.imshow(img)
    
    plt.title('original')
    
    plt.subplot(132)
    plt.imshow(img_gray,'gray')
    plt.title('img_gray')
    plt.subplot(133)
    covert_img=covert_img[:,:, ::-1]
    plt.imshow(covert_img)
    plt.title('covert_img')
    
    plt.show()
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    作业二:
    第一步:第一步:读取 res 下面的 girl.jpg,读取彩图,,并转换为rbg格式展示

    第二步:灰度化处理,并展示
    第三步:灰度图二值化处理,像素值大于50,设置为255,小于50,设置为0
    第四步:伽马变换:通过幂运算来调整图像的对比度和亮度,每个像素值取 0.8 次幂,参考 math.pow(gamma[i][j], 0.8),并展示最终结果
    第五步:对数变换:通过对每个像素点的灰度值进行对数计算,以增强图像中低灰度级的细节,增强图像的整体对比度,对每个像素求 3 * math.log(1 + log[i][j]),并展示最终结果

    代码如下:

    import cv2
    import copy
    import math
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    import numpy as np
    
    mpl.rcParams["font.sans-serif"] = ["SimHei"]  # 指定默认字体 SimHei 黑体
    
    # 读入原始图像 res/girl.jpg,并用展示 rgb
    path=r'girl.jpg'
    
    
    def cv_show(name,img):
        cv2.imshow(name,img)
        #cv2.waitKey(0),接收0,表示窗口暂停
        cv2.waitKey(0)
        #销毁所有窗口
        cv2.destroyAllWindows()
    # 第一步:读取 res 下面的 girl.jpg,读取彩图,并转换为rbg格式展示
    img=cv2.imread(path)
    
    img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    
    
    cv_show('original',img)
    cv_show('girl_rgb',img_rgb)
    #cv_show('girl_rgb',img)
    # 灰度化处理,并展示
    img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    cv_show('girl_gray',img_gray)
    # 二值化处理
    
    # gray是灰度图,像素值大于50,设置为255,小于50,设置为0
    
    ret,dst1=cv2.threshold(img_gray,50,255,cv2.THRESH_BINARY)
    cv_show('girl_gray_binary',dst1)
    
    # 伽马变换:通过幂运算来调整图像的对比度和亮度,每个像素值取 0.8 次幂,参考 math.pow(gamma[i][j], 0.8),并展示最终结果
    rows = img.shape[0]  # rows、cols 行列数,rows 也就是高度
    cols = img.shape[1]
    
     
    # 设定伽马值
    gamma = 0.8
     
    # 对图像进行伽马变换
    gamma_correction = np.power(img_gray / 255.0, gamma)
    gamma_correction = (gamma_correction * 255).astype(np.uint8)
    cv_show('girl_gamma_correctiony',gamma_correction)
    
    
    
    
    # 对数变换:通过对每个像素点的灰度值进行对数计算,以增强图像中低灰度级的细节,增强图像的整体对比度,对每个像素求 3 * math.log(1 + log[i][j]),并展示最终结果
    for i in range(rows):
        for j in range(cols):
            img_gray[i][j]= 3 * math.log(1 + img_gray[i][j])
         #   print(img_gray[i][j])
    
    cv_show('log_img',img_gray)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    飞书API 2-1:如何通过 API 创建文件夹?
    广州华锐互动:炼钢工厂VR仿真实训系统
    一文了解Validator库
    Kafka实时数据即席查询应用与实践
    Netron【.pt转.onnx模型展示】
    2023华为OD统一考试(B卷)题库清单(按算法分类),如果你时间紧迫,就按这个刷
    面试官:说一下MySQL事务隔离级别?
    计算机操作系统面试题自用
    Linux-挖矿木马清理
    排序算法总结及JAVA代码实现
  • 原文地址:https://blog.csdn.net/weixin_43327597/article/details/134497495