zoukankan      html  css  js  c++  java
  • OpenCV学习第四课——图像的加法、类型转换、缩放、翻转、融合

    1、图像的加法

    import numpy as np
    import cv2
    
    a = cv2.imread("E:\image\lena256.bmp")
    b = a
    add1 = a + b  # 直接使用加法  会出现像素大于255
    add2 = cv2.add(a, b)  # add()方法 会将像素控制在最大值255的范围内
    cv2.imshow("original", a)
    cv2.imshow("add1", add1)
    cv2.imshow("add2", add2)
    
    cv2.waitKey()
    cv2.destroyAllWindows()

    2、图像的类型转换

    # coding=utf-8
    
    import cv2
    
    """
    图像类型转换,比如彩色图像转换为灰度图像
    BGR图像转换为RGB
    灰度图像转换为BGR  等等
    """
    
    # 彩色转换为灰度
    
    # def zh_ch(string):
    #     return string.encode("gbk").decode(errors="ignore")
    #
    #
    # a = cv2.imread("E:\image\lenacolor.png")
    # b = cv2.cvtColor(a, cv2.COLOR_BGR2GRAY)  # COLOR_BGR2GRAY 将彩色转换为灰度
    #
    # cv2.imshow(zh_ch('彩色图像'), a)
    # cv2.imshow(zh_ch('转换后的图像'), b)
    # cv2.waitKey()
    # cv2.destroyAllWindows()
    
    # BGR图像转换为RGB
    
    # a = cv2.imread("E:\image\lenacolor.png")
    # b = cv2.cvtColor(a, cv2.COLOR_BGR2RGB)  # COLOR_BGR2RGB 将BGR转换为RGB
    #
    # cv2.imshow("BGR", a)
    # cv2.imshow('RGB', b)
    # cv2.waitKey()
    # cv2.destroyAllWindows()
    
    
    # GRAY(灰度图像)转换为BGR
    
    a = cv2.imread("E:\image\lena256.bmp",cv2.IMREAD_UNCHANGED) # 灰度图像 的时候要加上cv2.IMREAD_UNCHANGED
    b = cv2.cvtColor(a, cv2.COLOR_GRAY2BGR) # 灰度转换为BGR
    cv2.imshow("GRAY", a)
    cv2.imshow('BGR', b)
    cv2.waitKey()
    cv2.destroyAllWindows()

    3、图像的缩放

    """
    语法格式
    dst = cv2.resize(src,dsize,fx,fy)
    
    src:处理什么图片就写什么
    dsize:缩放大小
    fx,fy:缩放大小
    b = cv2.resize(a,(122,122))
    b=cv.resize(a,None,fx=0.5,fy=0.7)
    dsize fx,fy 设置一个即可
    """
    
    import cv2
    
    a = cv2.imread("E:\image\lenacolor.png")
    
    # b=cv2.resize(a,(200,100))
    # cv2.imshow("original",a)
    # cv2.imshow("resize",b)
    # cv2.waitKey()
    # cv2.destroyAllwindows()
    """
    一般情况下用这种方法,按比例缩放
    """
    rows,cols,chn=a.shape # 获得行列通道
    print(rows,cols)
    b=cv2.resize(a,(round(cols*0.5),round(rows*1.2))) # 缩放  先写列  在写行
    cv2.imshow("original",a)
    cv2.imshow("resize",b)
    cv2.waitKey()
    cv2.destroyAllWindows()

    4、图像翻转

    """
    语法:dst=cv2.flip(src,flipCode)
    flipCode=0 以X轴为对称轴上下翻转
    flipCode>0 以Y轴为对称轴左右翻转
    flipCode<0 以x,y轴为对称轴上下左右翻转
    范例:dst = cv2.flip(src,1)
    """
    import cv2
    
    a=cv2.imread("E:\image\lenacolor.png")
    b=cv2.flip(a,0)
    c=cv2.flip(a,1)
    d=cv2.flip(a,-1)
    cv2.imshow("original",a)
    cv2.imshow("=0",b)
    cv2.imshow(">0",c)
    cv2.imshow("<0",d)
    
    cv2.waitKey()
    cv2.destroyAllWindows()

    5、图像融合

    # 图像融合 可以使两个模糊的图像生成一个清晰的图像
    import cv2
    
    a = cv2.imread("E:\image\lena.bmp")
    
    b = cv2.imread("E:\image\add\boat.bmp")
    
    # dst=addWeighted(src1, alpha, src2, beta, gamma)
    # dst=src1*alpha + src2*beta + gamma  gamma为亮度调节值,不可省略。
    result=cv2.addWeighted(a,0.5,b,0.5,0)
    cv2.imshow("boat",b)
    cv2.imshow("lena",a)
    cv2.imshow("result",result)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
  • 相关阅读:
    Java基础
    数据库表设计
    Spring循环依赖
    Mysql类型转换
    Mysql刷题
    JavaScript
    Git
    告别.NET生成报表统计图的烦恼
    JS给页面标签添加事件(或超链接链接)
    发现联想手机P630型号的一个严重的系统Bug
  • 原文地址:https://www.cnblogs.com/pyhan/p/13740055.html
Copyright © 2011-2022 走看看