图像基础入门--图像的基本运算

图像的基本运算

通道的拆分与合并

  1. 拆分

    彩色图像(BGR)

    import cv2
    img = cv2.imread("图像名")
    b = img[:,:,:,0]
    g = img[:,:,:,1]
    r = img[:,:,:,2]
    
import cv2
img = cv2.imread("图像名")
b,g,r =cv2.split(img)
import cv2
import numpy as np
a = cv2.imread("图片")
b,g,r =cv2.split(a)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()
  1. 合并

    import cv2
    import numpy as np
    a = cv2.imread("图片")
    b,g,r=cv2.split(a)
    bgr = cv2.merge([b,g,r])
    rgb = cv2.merge([r,g,b])
    cv2.imshow('bgr',bgr)
    cv2.imshow("rgb",rgb)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
import numpy as np
a=cv2.imread("图片")
rows,cols,chn=a.shape
b=cv2.split(a)[0]
g = np.zeros((rows,cols),dtype=a.dtype)  
r = np.zeros((rows,cols),dtype=a.dtype)  
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()

图像运算

  1. 加法运算----numpy加法运算

取模 运算方式:结果=图像1+图像2

  1. 加法运算----opencv加法运算

    饱和运算

    运算方式:结果cv2.add(图像1,图像2)

    Numpy加法与Opencv加法比较(参与运算的图像大小,类型必须一致!!!)

    import cv2

    import cv2
    import numpy as np
    a =cv2.imread("图片")
    b = a
    result1 =a+b
    result2 = cv2.add(a,b)
    cv2.imshow("orginal",a)
    cv2.imshow("result1",result1)
    cv2.imshow("result2",result2)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
  2. 图像融合

    将2张或2张以上的图像信息融合到一张图像上,融合的图像航油更多的信息、能够更方便人来观察或者计算机处理

    import cv2
    import numpy as np
    a =cv2.imread("image")
    b =cv2.imread("image")
    result = cv2.addWeighted(a,0.3,b,0.7,0)
    cv2.imshow("boat",a)
    cv2.imshow("lena",b)
    cv2.imshow("result",result)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

如果2张图片的大小不一致,怎么处理?案例如下:

import cv2
import numpy as np
a =cv2.imread("image//cat.jfif")
b =cv2.imread("image//view.jfif")
print(a.shape)
print(b.shape)
ROIa = a[0:700,0:700]
ROIb = b[0:700,0:700]
# cv2.imshow("roia",ROIa)
# cv2.imshow("roib",ROIb)
result = cv2.addWeighted(ROIa,0.3,ROIb,0.7,0)
# cv2.imshow("cat",a)
# cv2.imshow("view",b)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
  1. 图像类型转换

    类型转换
    opencv 提供了200多种不同类型之间的转换

    re=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
    

    cv2.COLOR_BGR2GRAY
    cv2.COLOR_BGR2RGB
    cv2.COLOR_GRAY2BGR

    import cv2
    a=cv2.imread("image\\lenacolor.png")
    b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
    cv2.imshow("lenaColor",a)
    cv2.imshow("lenaGray",b)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
    #案例1:将BGR转换为RGB
    import cv2
    a=cv2.imread("image")
    b=cv2.cvtColor(a,cv2.COLOR_BGR2RGB)
    cv2.imshow("BGR",a)
    cv2.imshow("RGB",b)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
    #案例2:灰度图像转换彩色图像
    import cv2
    a=cv2.imread("image",cv2.IMREAD_UNCHANGED)
    b=cv2.cvtColor(a,cv2.COLOR_GRAY2BGR)
    cv2.imshow("GRAY",a)
    cv2.imshow("BGR",b)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
    #分别打印shape看区别
    import cv2
    a=cv2.imread("image",cv2.IMREAD_UNCHANGED)
    b=cv2.cvtColor(a,cv2.COLOR_GRAY2BGR)
    print(a.shape)
    print(b.shape)
    
    #灰度图像转换彩色图像 通道拆分
    import cv2
    a=cv2.imread("image",cv2.IMREAD_UNCHANGED)
    b=cv2.cvtColor(a,cv2.COLOR_GRAY2BGR)
    bb,bg,br=cv2.split(b)
    cv2.imshow("bb",bb)
    cv2.imshow("bg",bg)
    cv2.imshow("br",br)
    cv2.waitKey()
    cv2.destroyAllWindows()
    
  2. 图像缩放

    resize(函数)
    语法:dst = cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])
    dst = cv2.resize(src,dsize) 必填参数 src: 图像来源 dszie:缩放大小 举例:b= cv2.resize(a,(122,122))
    列 行
    dst = cv2.resize(src,dsize,fx,fy) fx,fy缩放大小 水平方向 垂直方向
    举例: b = cv2.resize(a,None,fx=0.5,fy=0.7) 注意: deszie fx,fy设置一个即可

import cv2
a=cv2.imread("image\\lenacolor.png")
b=cv2.resize(a,(200,100))
#注意:第2个参数控制的是“列长度、行长度”,注意顺序。
cv2.imshow("original",a)
cv2.imshow("resize",b)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
a=cv2.imread("image\\lenacolor.png")
b=cv2.resize(a,None,fx=1.2,fy=0.5)
cv2.imshow("original",a)
cv2.imshow("resize",b)
cv2.waitKey()
cv2.destroyAllWindows()

7. 图像旋转

语法:dst = cv2.flip(src,flipCode) 例如:dst =cv2.flip(src,1)
flipCode = 0 以x轴翻转
flipCode > 0 以y轴翻转
flipCode < 0 以x轴翻转一次,y轴翻转一次

import cv2
a=cv2.imread("image")
b=cv2.flip(a,-1)
cv2.imshow("original",a)
cv2.imshow("flip",b)
cv2.waitKey()
cv2.destroyAllWindows()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值