当前位置: 首页 > news >正文

OpenCV杂项图像变换(2)线性混合函数blendLinear()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

执行两个图像的线性混合:
dst ( i , j ) = weights1 ( i , j ) ∗ src1 ( i , j ) + weights2 ( i , j ) ∗ src2 ( i , j ) \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) dst(i,j)=weights1(i,j)src1(i,j)+weights2(i,j)src2(i,j)
blendLinear 函数是 OpenCV 中用于实现线性混合的一种方法。这个函数可以将多个图像按照指定的权重进行混合,生成一个新的图像。这对于图像融合或者创建过渡效果非常有用。

函数原型


void cv::blendLinear	
(InputArray 	src1,InputArray 	src2,InputArray 	weights1,InputArray 	weights2,OutputArray 	dst 
)		

参数

  • 参数src1 它的类型为 CV_8UC(n) 或 CV_32FC(n),其中 n 是一个正整数。
  • 参数src2 它具有与 src1 相同的类型和大小。
  • 参数weights1 它的类型为 CV_32FC1 并且与 src1 具有相同的大小。
  • 参数weights2 它的类型为 CV_32FC1 并且与 src1 具有相同的大小。
  • 参数dst 如果它没有与 src1 相同的大小和类型,则会创建它。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main(int argc, char** argv)
{// 读取图像Mat image1 = imread("/media/dingxin/data/study/OpenCV/sources/images/top.jpg");Mat image2 = imread("/media/dingxin/data/study/OpenCV/sources/images/bottom.jpg");if (image1.empty() || image2.empty()) {std::cerr << "Error: Could not open or find the images." << std::endl;return -1;}// 确保两个图像的大小一致if (image1.size() != image2.size()) {std::cerr << "Error: Images must have the same size." << std::endl;return -1;}cv::resize(image2, image2, image1.size());// 创建权重图像Mat weights1(image1.size(), CV_32FC1, Scalar(0.5));Mat weights2(image1.size(), CV_32FC1, Scalar(0.5));std::cout<<image1.size()<<" "<<image2.size()<<weights1.size()<<weights2.size()<<std::endl;// 创建输出图像// 创建输出图像Mat blendedImage;// 应用线性混合blendLinear(image1, image2, weights1, weights2, blendedImage);// 显示结果namedWindow("Image 1", WINDOW_NORMAL);imshow("Image 1", image1);namedWindow("Image 2", WINDOW_NORMAL);imshow("Image 2", image2);namedWindow("Blended Image", WINDOW_NORMAL);imshow("Blended Image", blendedImage);waitKey(0);return 0;
}

运行结果

在这里插入图片描述


http://www.mrgr.cn/news/10900.html

相关文章:

  • npm install常见错误以及解决办法
  • 巴西游戏出海!Bigo Ads助力巴西休闲游戏APP营销广告策略
  • 【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_SparkColumn.cs
  • ZooKeeper 的选举原理
  • 基于OpenCV+MFC的KCF测速软件
  • 批量归一化(Datawhale X 李宏毅苹果书 AI夏令营)
  • 鸿蒙高级开发者认证题库(2)
  • gateway的学习
  • 设计模式篇(行为型模式 - DesignPattern)(持续更新迭代)(图片待加载)
  • 探索分析文档布局,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建大规模文档数据集DocLayNet场景下文档图像布局智能检测分析识别系统
  • 电脑浏览器打不开部分网页
  • OpenAI推出新功能:GPT-4o正式上线微调功能,限时免费!
  • 虚幻5|音效设置—环境音效,低血量和恢复血量音效,音效衰减,脚步音效
  • 构建Spring Boot应用的自动化测试策略
  • 磁盘I/O性能优化示例
  • 005 交换网络中的STP与RSTP协议
  • OpenGL实现3D游戏编程【连载6】——无规则图形的纹理贴图
  • 网络协议的重要性与应用:理解进程间通信和网络分层结构(下)
  • HCIP笔记10-BGP(3)
  • 数据库,SQL和 MySql的三者关系