Python Opencv实践 - 图像混合

复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img_dog = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
plt.imshow(img_dog[:,:,::-1])

img_water = cv.imread("../SampleImages/waterdrop.jpg", cv.IMREAD_COLOR)
plt.imshow(img_water[:,:,::-1])

#相同大小尺寸的两幅图像混合
#g(x) = (1 - a)h(x) + af(x), a为0-1之间的值,h(x),f(x)表示两幅图像的像素值
#cv.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)
#参考资料:https://blog.csdn.net/LaoYuanPython/article/details/109143281
img_blended = cv.addWeighted(img_dog, 0.75, img_water, 0.25, 0)
plt.imshow(img_blended[:,:,::-1])

# 不同尺寸之间的两幅图像混合,自定义一个函数
# addWeightedSmallImgToLargeImg(largeImg,alpha,smallImg,beta,gamma=0.0,regionTopLeftPos=(0,0))
# 前五个参数和addWeighted一样,多了一个regionTopLeftPos参数用于指定小图在大图中左上角的位置
def addWeightedSmallImgToLargeImg(largeImg,alpha,smallImg,beta,gamma=0.0,regionTopLeftPos=(0,0)):
    srcW, srcH = largeImg.shape[1::-1]
    refW, refH = smallImg.shape[1::-1]
    x,y =  regionTopLeftPos
    if (refW>srcW) or (refH>srcH):
        #raise ValueError("img2's size must less than or equal to img1")
        raise ValueError(f"img2's size {smallImg.shape[1::-1]} must less than or equal to img1's size {largeImg.shape[1::-1]}")
    else:
        if (x+refW)>srcW:
            x = srcW-refW
        if (y+refH)>srcH:
            y = srcH-refH
        destImg = np.array(largeImg)
        tmpSrcImg = destImg[y:y+refH,x:x+refW]
        tmpImg = cv.addWeighted(tmpSrcImg, alpha, smallImg, beta,gamma)
        destImg[y:y + refH, x:x + refW] = tmpImg
        return destImg

img_cat = cv.imread("../SampleImages/cat.jpg", cv.IMREAD_COLOR)
plt.imshow(img_cat[:,:,::-1])

img_blended = addWeightedSmallImgToLargeImg(img_cat, 0.65, img_dog, 0.35, 0, (100,300))
plt.imshow(img_blended[:,:,::-1])
相关推荐
OpenBayes贝式计算8 分钟前
端侧同尺寸 SOTA:OpenBMB 发布 1B 参数模型 MiniCPM5-1B;集成多级平行语料与多语言词典:SMOL 翻译数据集开源
计算机视觉·google·nvidia
小桥流水---人工智能17 分钟前
【已解决】ImportError: cannot import name ‘AdamW‘ from ‘transformers.optimization‘
python
OpenBayes贝式计算18 分钟前
教程上新丨英伟达开源 LocateAnything,3B 模型可实现图像 + 视频的目标指向 / 开放词汇目标检测/指代表达定位 / OCR 文本定位等功能
计算机视觉·agent·nvidia
芝麻开门GEO25 分钟前
泰安GEO优化服务,真的能提升效果吗?
人工智能·python
颜酱34 分钟前
选读:工业级调用 LangChain:从 Demo 到企业级应用
python
颜酱1 小时前
LangChain 调用大模型实战:从跑通到服务商与模型选型
python·langchain
小小de风呀1 小时前
de风——【从零开始学C++】(十一):list的基本使用和模拟实现
开发语言·c++·list
三行数学2 小时前
Matlab之父克利夫·莫勒尔逝世
开发语言·matlab
陌路202 小时前
C++高级进阶--夯实进阶基础(1)
开发语言·c++
唐装鼠2 小时前
Nginx + Gunicorn + Python Web 应用 架构(Claude)
python·nginx·gunicorn