Opencv + python:图像算术运算

imshow()不显示图片原因:
1.读取图片出错
imread()的第一个参数最好为绝对路径(例:img = cv2.imread('D:\Pictures\lenna.jpg'))如果imread()的第一个参数为图片名(例:img = cv2.imread('lenna.jpg',0)),lenna.jpg必须在Python脚本所在的文件夹下。
是否读取成功print img检验。
2.显示图片出错
(1)这里是不能把图片放到桌面的(桌面是中文路径)。即使print的时候是正常的,但是imshow()的时候会出现“程序无法响应”(即出现了显示图像的框,但是是灰色的)还是无法显示图片。

在这里插入图片描述
(2)imshow()会显示图像但也会立刻消失,在imshow()
后面加入cv2.waitKey() 和cv2.destroyAllWindows()
在这里插入图片描述
destroyWindows()函数可以释放由 OpenCV创建的所有窗口。
———————————————————————潇洒的分割线———————————————————————————
**

一.图像上的算术运算

**
1.图像加法
使用cv2.add()进行图像的加法运算,两幅图像的大小类型必须一致。
例:

import cv2
img1 = cv2.imread('lenna.jpg')
img2 = cv2.imead('canny.jpg')
cv2.imshow('image1'.img1)
cv2.imshow('image2',img2)
img3 = cv2.add(img1,img2)
cv2.imshow('imge3',img3)
cv2.waitKey(0)
cv2.destoryAllWindows()

结果如下:
在这里插入图片描述
可能有些小伙伴认为一个图片与黑色图片相加是黑色的,但是注意这里的图片相加不是颜色相加,而是像素值相加。黑色的像素值是0,原图片的像素值 +0 = 原图片像素值。
2.图像混合
图像混合就是将两幅图片以不同的权重相加,从而产生一幅混合或者透明的图像。计算公式为:g(x) = (1-α)fa(x) + αfb(x) ,权重越大透明度越低。
运用

cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst
参数:

src1——第一个数组(First source array)

alpha——第一个数组的权值(Weight for the first array elements)

src2——第二个数组,和第一个数组有相同大小,相同的通道数(Second source array of the same size and channel number as src1)

beta——第二个数组的权值( Weight for the second array elements)

dst——目标数组,和输入数组有相同的大小,相同的通道数(Destination array that has the same size and number of channels as the input arrays.)

gamma——加到每个和上的数值(Scalar added to each sum.)

dtype——目标数组的深度值(Optional depth of the destination array. When both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth())
先贴上代码:

import cv2
import numpy as np
img1 = cv2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值