目录
1.图像加法1.1Numpy加法1.2OpenCV加法2.图像融合3.改变颜色空间1.图像加法
图像加法有两种方式,一种是通过 Numpy 直接对两个图像进行相加,另一种是通过 OpenCV 的 add() 函数进行相加。
(资料图片仅供参考)
不管使用哪种方法,相加的两个图像必须具有相同的深度和类型,简单理解就是图像的大小和类型必须一致。
1.1Numpy加法
Numpy 的运算方法是:img = img1 + img2 ,然后再对最终的运算结果取模。
当最终的像素值 <= 255 时,则运算结果直接为 img1 + img2 。当最终的像素值 > 255 时,则运算的结果需对 255进行取模运算。1.2OpenCV加法
OpenCV 的运算方式是直接调用 add() 函数进行的,这时的运算方式是饱和运算。
当最终的像素值 <= 255 时,则运算结果直接为 img1 + img2 。当最终的像素值 > 255时,这时则是饱和运算,结果固定为 255 。两种加法方式对应的示例如下:
import cv2 as cv # 读取图像 img = cv.imread("data.jpg", cv.IMREAD_UNCHANGED) test = img # Numpy 加法 result1 = img + test # OpenCV 加法 result2 = cv.add(img, test) # 显示图像 cv.imshow("img", img) cv.imshow("result1", result1) cv.imshow("result2", result2) # 等待显示 cv.waitKey() cv.destroyAllWindows()
可以看到,使用 Numpy 取模加法的图片整体更偏蓝色,而使用 OpenCV 饱和运算的加法,整体颜色更偏白色。
2.图像融合
图像融合其实也是一种图像加法,但是它和图像加法不同的是对图像赋予不同的权重,可以使图像具有融合或者透明的感觉。
图像加法: img = img1 + img2图像融合:img = img1 * alpha + img2 * beta + gamma图像融合用到的函数为 addWeighted() 具体如下:
dst = cv.addWeighter(img1, alpha, img2, beta, gamma) dst = img1 * alpha + img2 * beta + gamma
这里的 alpha 和 beta 都是系数,而 gamma 则是一个亮度调节量,不可省略。
下面这个示例中,有一张地铁的图片,用这张图片和小姐姐做一个图像融合的案例:
img1 = cv.imread(file, cv.IMREAD_UNCHANGED) img1=cv.resize(img1,(1000,1000)) img2 = cv.imread(file1, cv.IMREAD_UNCHANGED) img2=cv.resize(img2,(1000,1000)) # 图像融合 img = cv.addWeighted(img1, 0.4, img2, 0.6, 10) # 显示图像 cv.imshow("img1", img1) cv.imshow("img2", img2) cv.imshow("img", img) # 等待显示 cv.waitKey() cv.destroyAllWindows()
注意:这里如果二个图像像素不同要更改为同一像素下cv.resize(img,(width,hegiht))
3.改变颜色空间
OpenCV 中有超过150种颜色空间转换方法。我们先介绍两种最常用的: BGR <-> 灰度 和 BGR <-> HSV 。
对于改变颜色空间,我们使用 cvtColor(input_image, flag) 函数,其中的 flag 为转换的类型。
一些常见的 flag 值:
# BGR 转 灰度 cv.COLOR_BGR2GRAY # BGR 转 HSV cv.COLOR_BGR2HSV # BGR 转 RGB cv.COLOR_BGR2RGB # 灰度 转 BGR cv.COLOR_GRAY2BGR
我们使用 cvtColor() 这个函数将小姐姐转化成灰度图像,示例如下:
import cv2 as cv # 读取图像 img = cv.imread("data.jpg", cv.IMREAD_UNCHANGED) # 图像类型转换 result = cv.cvtColor(img, cv.COLOR_RGB2GRAY) # 图像展示 cv.imshow("img", img) cv.imshow("result", result) # 等待显示 cv.waitKey() cv.destroyAllWindows()
到此这篇关于python opencv 图像处理之图像算数运算及修改颜色空间的文章就介绍到这了,更多相关python opencv 图像处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 2如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 3AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 4转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 5充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 6好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 7名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 8亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 9京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 10网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久