美文网首页
Core-L02-图型的算数运算

Core-L02-图型的算数运算

作者: 全栈顾问 | 来源:发表于2019-06-14 15:18 被阅读0次

目标

学习几个图像的算数运算,例如:加、减、位运算。

学习的函数,包括:cv2.add(),cv2.addWeighted()等。

加运算

可以用函数cv2.add()或着numpy的加号运算, res = img1 + img2使两个图片相加。两个图片必须有相同的深度(depth)和类型(type),或者第二个图像必须是scalar值。

x = np.uint8([250])
y = np.uint8([10])
print(cv2.add(x,y)) # 250+10 = 260 => 255
print(x+y) # 250+10 = 260 % 256 = 4

图像混合(Blending)

这是图像相加的运算,但是可以对每个图像采用不同的权重,从而实现混合透明的效果。

dst=α⋅img1+β⋅img2+γ

import cv2

img1 = cv2.imread('../robot.png')
img2 = cv2.imread('../logo.png')
dst = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

位运算(Bitwise)

位操作包括AND,OR,NOT,XOR。这些操作在提取图像的非矩形区域时非常有用,例如非矩形的ROI。下面的例子演示如何改变一个图像区域。

我们打算把logo放到图像上,如果用加法会改变图像的颜色,如果混合会得到透明效果,但是我们希望它是不透明的。如果logo是矩形,可以用ROI的方法,但是logo不是矩形的,所以需要通过位操作完成。

# coding: utf-8

import cv2

# Load two images
img1 = cv2.imread('../01.jpeg')
img2 = cv2.imread('../logo.png')

# I want to put logo on top-left corner, So I create a ROI
rows, cols, channels = img2.shape
roi = img1[0:rows, 0:cols]

# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

# Now black-out the area of logo in ROI
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)

# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2, img2, mask=mask)

# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg, img2_fg)
img1[0:rows, 0:cols] = dst

cv2.imshow('res', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关文章

  • Core-L02-图型的算数运算

    目标 学习几个图像的算数运算,例如:加、减、位运算。 学习的函数,包括:cv2.add(),cv2.addWeig...

  • JavaScript快速入门03-运算符

    JS的运算符 算数运算符 算数运算符用于对数值进行算数运算 运算符描述说明+加法运算-减法运算*乘法运算/除法运算...

  • 四、ORACLE 操作符

    算数运算 oracle中的算术运算只有 + - * / 四个,其中 / 的结果是浮点型。求余数只能借助MOD(X,...

  • 3.4.3关系运算符

    关系运算符的作用是比较两边的运算数,结果总是 boolean型的数据。表3.5列出了常用的关系运算符 在关系运算中...

  • Swift--运算符

    算数运算符 关系运算符 逻辑运算符 位运算符 其他运算符 算数运算符 算数运算符有 一元运算符、 二元运算符、 算...

  • MySQL运算符

    算数运算符,比较运算符,逻辑运算符,位运算符 算数运算符: + - * / % 比较运算符: =, <>, !=...

  • 算数运算符

    算数运算符 通过算数运算符可以完成基本的加减乘除取余的运算操作 算数运算符有哪些 求和 相减 乘积/ 相除++ 自...

  • C语言 运算符与表达式

    ###算数运算符:‘+’,‘-‘,’*‘,’/',’%(取余)‘,’+(正号)‘,’-(负号)‘ 算数运算符:%是...

  • JS常用运算符

    Get Started 算数运算符string运算 比较运算符void逗号运算符运算顺序 逻辑运算符 算数运算符 ...

  • 刺猬教你量化投资(二) :运算、控制与结构

    Python的三类运算 Python的基本运算包括三种类型,分别是算数运算、比较运算、赋值运算和逻辑运算。 算数运...

网友评论

      本文标题:Core-L02-图型的算数运算

      本文链接:https://www.haomeiwen.com/subject/owfpxctx.html