图像处理:alphablend混合两张图片(代码片段)

zzatp zzatp     2022-11-18     211

关键词:

使用vs2017新建一个项目

混合A,B两张图的基础算法:

outColor = srcColor * srcAlpha + destColor * (1 - srcAlpha)

输出颜色 = 源颜色 * 源混合因子 + 目标颜色 * ( 1 - 源混合因子 ) 

 

这里scrAlpha从源图的Alpha通道获取

代码如下:

// alphablendimg.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()

    // 读取两张图片
    Mat destImg = imread("backGround.jpg", -1);
    Mat srcImg = imread("foreGroundAsset.png", -1);
    // 取出A图片的Alpha值
    Mat bgra[4];
    split(srcImg, bgra);
    Mat outImage = Mat::zeros(destImg.size(), CV_8UC3);
    

    // 逐像素混合 A,B两张图的r,g,b颜色,混合公式 outColor = srcAlpha*srcColor + (1-scrAlpha)*destColor
    unsigned char* fptr = reinterpret_cast<unsigned char*>(srcImg.data);
    unsigned char* bptr = reinterpret_cast<unsigned char*>(destImg.data);
    unsigned char* aptr = reinterpret_cast<unsigned char*>(bgra[3].data);
    unsigned char* outImagePtr = reinterpret_cast<unsigned char*>(outImage.data);

    int numberOfPixels = srcImg.rows * srcImg.cols * srcImg.channels();
    int i, j;
    for (j = 0; j < numberOfPixels;)
    
        float srcAlpha = (*aptr)/255.0;

        *outImagePtr = (*fptr)*srcAlpha + (*bptr)*(1 - srcAlpha); // Blue
        outImagePtr++;fptr++;bptr++;
        *outImagePtr = (*fptr)*srcAlpha + (*bptr)*(1 - srcAlpha); // Green
        outImagePtr++;fptr++;bptr++;
        *outImagePtr = (*fptr)*srcAlpha + (*bptr)*(1 - srcAlpha); // Red
        outImagePtr++;fptr++;bptr++;

        fptr++; // 跳过Alpha通道
        j += 4;

        aptr++;
    

    imshow("alpha blended image", outImage);
    waitKey(0);
cv::destroyAllWindows();
return 0;
源图片:

 


目标图片:

 混合效果:

 

 

 

mfc-alphablend显示具有指定透明度的图像(代码片段)

 HDChdc=::GetDC(m_hWnd);BITMAPbm;HBITMAPhbmp=LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));//从资源中读取位图GetObject(hbmp,sizeof(BITMAP),(PSTR)&bm);//获取位图信息HDChdc1=CreateCompatibleDC(hdc);//创建内存DCHBITMAPoldhdc=(HBITMAP)SelectObject(hdc1,hbmp);... 查看详情

opencv图像处理基础操作之图像的加法和混合

概述图像的加法和混合都是将两张相同大小的图像结合生成一张新的图像的方法,但是他们的计算方式和生成图像的效果都不同。图像的加法就是简单的将两张图像的像素值相加,生成一个新的图像。如果两张图像的尺寸不同的... 查看详情

python混合图片操作(代码片段)

一、前言今天我们来实现一下图片的混合。图片混合就是把两张图片混合在一起,我们可以看下效果,具体效果如下:左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比... 查看详情

opencv+cpp系列图像的加权混合对比度与亮度(代码片段)

文章目录一、图像的加权混合线性混合二、对比度增强一、图像的加权混合线性混合函数是将两张相同大小,相同类型的图片(叠加)线性融合的函数,可以实现图片的特效。图像的线性混合:g(x)=(1−α)f0(... 查看详情

如何评估两张图片的差异

...异很小的图片,将其中一个反色处理,然后在将两个图像混合,就能比较清晰的看到差异的地方。其中,方法五代码如下:fromPILimportImagefromPILimportImageChopsim1=Image.open(‘first_card.jpg‘)im2=Image.open(‘second_card.jpg‘)im3=ImageChops.invert(im... 查看详情

python混合图片操作(代码片段)

一、前言今天我们来实现一下图片的混合。图片混合就是把两张图片混合在一起,我们可以看下效果,具体效果如下:左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比... 查看详情

python混合图片操作(代码片段)

一、前言今天我们来实现一下图片的混合。图片混合就是把两张图片混合在一起,我们可以看下效果,具体效果如下:左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比... 查看详情

opencv完整例程17.两张图像的渐变切换(代码片段)

...小和类型的图像按权重相加,可以实现图像的叠加和混合。加权加法的计算表达式为:dst=s 查看详情

如何自动混合图像以创建逼真的合成 (java)

】如何自动混合图像以创建逼真的合成(java)【英文标题】:Howtoautomaticallyblendimagestocreaterealisticcomposites(java)【发布时间】:2019-04-2718:24:02【问题描述】:我有两张图片-背景和前景,具有不同的照明条件和色调。他们每个人都包含... 查看详情

canvas合并两张图片(代码片段)

          解析:原理是一样的  画多张图需要一张一张画  也就是等图片onload成功后处理  这里代码写的比较随意  实际用的时候可以小粉转一下也非常简单。我懒~~  么么、、        newImage(t... 查看详情

将两张图片作为一张图片读取Python

】将两张图片作为一张图片读取Python【英文标题】:ReadingtwoimagesasoneimagePython【发布时间】:2016-12-0511:14:27【问题描述】:我有一组图像,一组“左”图像和一组“右”图像。我的任务是读入“left-01、left-02等”。和“right-01,right... 查看详情

图像编程:滤镜混合模式遮罩(代码片段)

...,0,0,0,0,0,0,1,0];代码来源http://edn.egret.com/cn/article/index/id/947#混合模式混合模式涉及将一个图像(基图像)的颜色与另一个图像(混合图像)的颜色进行组合来生成 查看详情

pillow库进行图像文件处理(配图详解)(代码片段)

...ow是PythonImagingLibrary的简称,是Python语言中最为常用的图像处理库。Pillow库提供了对Python3的支持,为Python3解释器提供了图像处理的功能。通过使用Pillow库,可以方便地使用Python程序对图片进行处理,例如常见的尺... 查看详情

Matlab:图像拼接和混合

】Matlab:图像拼接和混合【英文标题】:Matlab:Imagestitchingandblending【发布时间】:2011-02-1012:20:40【问题描述】:大家好。我从视频帧中获得了两张图像。它们有一定的重叠部分。在扭曲其中一个之后,我目前正在尝试将它们混合... 查看详情

如何将两张图片合并为一张图片

】如何将两张图片合并为一张图片【英文标题】:Howtofittwoimagesintooneimage【发布时间】:2022-01-1909:01:45【问题描述】:我正在做一个自己融合两个DICOM图像的项目。图片1(168x168)Image2(512x512)的图片合并后,两张图片完全不匹配。我... 查看详情

在两张图片中找到共同点

】在两张图片中找到共同点【英文标题】:Findingthecommonthingsintwoimages【发布时间】:2018-05-0909:57:23【问题描述】:我必须解决一个问题,我需要在两个图像中找到位于同一区域的相同对象。减去图像会产生非常奇怪的结果,因为... 查看详情

如何检查具有不同像素化的两张图像的相似性

】如何检查具有不同像素化的两张图像的相似性【英文标题】:Howtochecksimilarityoftwoimagesthathavedifferentpixelization【发布时间】:2019-03-1502:59:53【问题描述】:我正在运行一个python代码来检查Quora和Twitter用户个人资料照片的相似性,... 查看详情

全景拼接学习-原理篇两张图片之间关系计算单应性homograph估计(代码片段)

教程 https://zhuanlan.zhihu.com/p/74597564  目录一图像变换与平面坐标系的关系二平面坐标系与齐次坐标系三单应性变换  一图像变换与平面坐标系的关系旋转:     写成矩阵乘法形式:  平... 查看详情