您的位置:首页 > 编程语言 > Python开发

opencv_python学习笔记八

2016-11-21 16:28 218 查看
十 图像上的算术运算

常用运算有:加法 减法 位运算

cv2.add()

cv2.addWeighted()

函数原型

def add(src1,

src2,

dst=None,

mask=None,

dtype=None)

def addWeighted(src1, #第一个原数组

alpha,#第一个原数组的权值

src2,#第二个原数组

beta,#第二个数组的权值

gamma,#添加的常数项

dst=None,#输出数组

dtype=None)#输出阵列的可选深度

1 图像加法

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2016/11/14 15:19

# @Author : Retacn

# @Site : 图像的算术运算

# @File : imageArithmetic.py

# @Software: PyCharm

import cv2

import numpy as
np

from matplotlib
import
pyplot as
plt

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

#显示结果

# [[255]]

#[4]

2 图像混合

计算公式如下:

g(x)=(1-a)f0(x)+af1(x)

使用如下函数进行混合

img1=cv2.imread('test.jpg')

img2=cv2.imread('test1.jpg')

dst=cv2.addWeighted(img1,0.1,img2,0.9,0)

cv2.imshow('dst',dst)

cv2.waitKey(0)

cv2.destroyAllWindows()

3 按位与运算

And or not xor

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2016/11/15 8:42

# @Author : Retacn

# @Site : 按位与运算 AND OR NOT XOR

# @File : imageLogic.py

# @Software: PyCharm

import cv2

import numpy as
np

#加载图像

img1=cv2.imread("test1.jpg")

img2=cv2.imread("test.jpg")

#创建ROI

rows,cols,channels=img2.shape

roi=img1[0:rows,0:cols]

#创建mask

img2gray=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)

ret,mask=cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY)

mask_inv=cv2.bitwise_not(mask)

#取roi中与mask中不为零的值对应有像素数

img1_bg=cv2.bitwise_and(roi,roi,mask=mask)

img2_fg=cv2.bitwise_and(img2,img2,mask=mask_inv)

#ROI合并图像

dst=cv2.add(img1_bg,img2_fg)

img1[0:rows,0:cols]=dst

#显示图像

cv2.imshow("ImageLogic",img1)

cv2.waitKey(0)

cv2.destroyAllWindows()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: