【python-opencv】图像上的算术运算

【python-opencv】图像上的算术运算,第1张

概述1、加法运算 您可以通过OpenCV函数cv.add()或仅通过numpy *** 作res = img1 + img2添加两个图像。两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值。 注意&

1、加法运算

您可以通过OpenCV函数cv.add()或仅通过numpy *** 作res = img1 + img2添加两个图像。两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值。

注意 OpenCV加法和Numpy加法之间有区别。OpenCV加法是饱和运算,而Numpy加法是模运算。

import cv2 as cvimport numpy  npx=np.uint8([250])y=np.uint8([10])
cv.add(x,y) # 250+10 = 260 => 255

输出:array([[255]],dtype=uint8)

x+y # 250+10 = 260 % 256 = 4

输出:array([4],dtype=uint8)

当添加两个图像时,它将更加可见。OpenCV功能将提供更好的结果。因此,始终最好坚持使用OpenCV功能。

2、图像融合

这也是图像加法,但是对图像赋予不同的权重,以使其具有融合或透明的感觉。

img1 = cv.imread('ml.png')img2 = cv.imread(opencv-logo.png)dst = cv.adDWeighted(img1,0.7,img2,0.3,0)cv.imshow(dst3、按位运算

这包括按位 AND ORNOT 和 XOR  *** 作。它们在提取图像的任何部分、定义和处理非矩形 ROI 等方面非常有用。 下面我们将看到一个例子,如何改变一个图像的特定区域。 我想把 OpenCV 的标志放在一个图像上面。如果我添加两个图像,它会改变颜色。如果我混合它,我得到一个透明的效果。但我希望它是不透明的。如果是一个矩形区域,我可以使用 ROI,就像我们在上一章中所做的那样。但是 OpenCV 的 logo 不是长方形的。所以你可以使用如下的按位 *** 作来实现:

我想在图像上方放置OpenCV徽标。如果添加两个图像,它将改变颜色。如果混合它,我将获得透明效果。但我希望它不透明。如果是矩形区域,则可以像上一章一样使用ROI。但是OpenCV徽标不是矩形。因此,您可以按如下所示进行按位 *** 作:

# 加载两张图片img1 = cv.imread(messi5.jpgopencv-logo-white.png) 我想把logo放在左上角,所以我创建了ROIrows,cols,channels = img2.shaperoi = img1[0:rows,0:cols ] 现在创建logo的掩码,并同时创建其相反掩码img2gray = cv.cvtcolor(img2,cv.color_BGR2GRAY)ret,mask = cv.threshold(img2gray,10,255 cv.bitwise_not(mask) 现在将ROI中logo的区域涂黑img1_bg = cv.bitwise_and(roi,roi,mask = mask_inv) 仅从logo图像中提取logo区域img2_fg = cv.bitwise_and(img2,1)"> mask) 将logo放入ROI并修改主图像dst = cv.add(img1_bg,img2_fg)img1[0:rows,0:cols ] = dstcv.imshow(res          总结       

以上是内存溢出为你收集整理的【python-opencv】图像上的算术运算全部内容,希望文章能够帮你解决【python-opencv】图像上的算术运算所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存