江阴网站制作,网站开发公司有什么福利,seo培训师招聘,手机应用开发工具图像线性混合
使用 cv::addWeighted() 函数对两幅图像进行线性混合。alpha 和 beta 是两幅图像的权重#xff0c;它们之和应该等于1。gamma 是一个可选的增益#xff0c;这里设置为0。
你可以通过调整 alpha 的值来改变混合比例。如果 alpha0.5#xff0c;则两幅图像等权重…图像线性混合
使用 cv::addWeighted() 函数对两幅图像进行线性混合。alpha 和 beta 是两幅图像的权重它们之和应该等于1。gamma 是一个可选的增益这里设置为0。
你可以通过调整 alpha 的值来改变混合比例。如果 alpha0.5则两幅图像等权重混合如果 alpha0.7则第一幅图像的权重更大。
图像线性混合Image Blending通常是通过权重对两幅图像进行加权相加的操作产生一幅新的图像。这是一个简单的线性混合的示例
#include opencv2/opencv.hppint main() {// 读取两幅图像cv::Mat image1 cv::imread(11.png);cv::Mat image2 cv::imread(22.png);// 检查图像是否成功加载if (image1.empty() || image2.empty()) {std::cerr Error: Could not read the image(s). std::endl;return -1;}// 确保两幅图像大小相同if (image1.size() ! image2.size()) {std::cerr Error: Image sizes do not match. std::endl;return -1;}// 定义混合权重double alpha 0.5; // 第一幅图像的权重double beta 1.0 - alpha; // 第二幅图像的权重// 进行线性混合cv::Mat blendedImage;cv::addWeighted(image1, alpha, image2, beta, 0.0, blendedImage);// 显示原始图像和混合后的图像cv::imshow(Image 1, image1);cv::imshow(Image 2, image2);cv::imshow(Blended Image, blendedImage);// 等待按键cv::waitKey(0);return 0;
}设置感兴趣区域再矩形线形混合
#include opencv2/opencv.hppint main() {// 读取两幅图像cv::Mat image1 cv::imread(11.png);cv::Mat image2 cv::imread(22.png);// 检查图像是否成功加载if (image1.empty() || image2.empty()) {std::cerr Error: Could not read the image(s). std::endl;return -1;}// 确保两幅图像大小相同if (image1.size() ! image2.size()) {std::cerr Error: Image sizes do not match. std::endl;return -1;}// 定义感兴趣区域的矩形cv::Rect roiRect(100, 50, 150, 100);// 定义不同区域的权重double alpha1 0.8; // 第一幅图像的权重double beta1 1.0 - alpha1; // 第二幅图像的权重double alpha2 0.3; // 第一幅图像的权重double beta2 1.0 - alpha2; // 第二幅图像的权重// 创建两个感兴趣区域cv::Mat roi1 image1(roiRect);cv::Mat roi2 image2(roiRect);// 进行线性混合cv::Mat blendedROI;cv::addWeighted(roi1, alpha1, roi2, beta1, 0.0, blendedROI);// 将混合后的ROI放回原图像blendedROI.copyTo(image1(roiRect));// 显示原始图像和混合后的图像cv::imshow(Image 1, image1);cv::imshow(Image 2, image2);// 等待按键cv::waitKey(0);return 0;
}