OpenCV中的图片叠加和变换

本文深入探讨了图像处理中的两种关键技术:图像叠加和图像变换。详细介绍了通过掩膜和透明通道实现图像叠加的方法,以及如何利用透视变换和仿射变换对图像进行空间变换。适合图像处理和计算机视觉领域的研究者和开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.图片叠加的方法
通过掩膜进行叠加

假定一张图片位背景图片:BK 另外有一张图片是人的照片:PER。
1. 通过读取PER的灰度图来获取PER的掩膜 PER_MASK(掩膜的尺寸和PER的尺寸一样大)
2. 找到在BK需要赋值的位置 通过函数 PER.copyTo(BK_ROI,PER_MASK)。掩膜运算的方法是不对黑色的部分(值为0)进行赋值

通过透明通道进行叠加
  1. 读取PER的透明通道的数据。
  2. 将BK上的每一个像素点和PER的像素点进行运算,运算的规则为 BK=PERscale+BK(1scale)BK=PER∗scale+BK∗(1−scale)
    其中 scale=alpha/255scale=alpha/255
2.透视变换和仿射变换

假定有两幅图片 bk ,fp 有两组点 bk_p,fp_p。

仿射变换
  1. 通过有限点来获取变换矩阵
    cv::Mat H = cv::getAffineTransform(fp_p,bk_p);
    cv::warpAffine(fp, bk_ROI, H, cv::Size(bk_ROI.cols, bk_ROI.rows), cv::INTER_CUBIC);

2.通过图片来获取变换矩阵

 cv::Mat H=cv::findTransformECC(fp,bk);
//此处暂且未知 cv::
透视变换

1.通过有限点来获取变换矩阵

//通过点的变换来获取图片的变换
    cv::Mat H = cv::getPerspectiveform(fp_p,bk_p);
    cv::warpPerspective(fp, bk_ROI, H, cv::Size(bk_ROI.cols, bk_ROI.rows), cv::INTER_CUBIC);

2.通过点级来对已知的点进行变换

//通过已知图片的变换来获取点的变换
Mat H = findHomography(fp,bk,CV_RANSAC);
perspectiveTransform(fp_p,bk_p,H);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值