C/C++ OpenCV图像的线性混合
生活随笔
收集整理的這篇文章主要介紹了
C/C++ OpenCV图像的线性混合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線性混合操作是一種電信的二元(兩個輸入)的像素操作,
理論公式:h(x)=(1-a)*f(x)+a*g(x) (0<=a<=1)
通過在范圍0到1之間改變a的值,來對兩幅圖像(f(x)和g(x))或者段視頻產生畫圖重疊效果
計算數組加權和:
addWeighted()函數
void addWeighted(
InputArray src1,double alpha,
InputArray src2,double beta,
double gamma,OutputArry dst,
int dtype=-1
)
第一個參數:輸入的第一個圖像
第二個參數:第一個圖像的權重值
第三個參數:和第一個參數相同尺寸的第二個圖像
第四個參數:第二個圖像的權重
第五個參數:加到權重總和上的變量值
第六個參數:輸出的圖像
第七個參數:輸出的可選深度,默認為-1
注意:圖片尺寸要一樣
namedWindow創建窗口
如:
namedWindow("原圖1");
imshow("原圖1", image1);
他們之間的標準是那兩個地方必須一樣
下面是代碼:
#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main() {Mat image1, image2, destimge;image1 = imread("1.jpg");if (!image1.data){printf("第一張圖片讀取失敗!\n");return -1;}namedWindow("原圖1");imshow("原圖1", image1);image2 = imread("2.jpg");if (!image2.data){printf("第二張圖片讀取失敗!\n");return -1;}namedWindow("原圖2");imshow("原圖2", image2);double alpha = 0.5;double beta = 1.0 - alpha;addWeighted(image1, alpha, image2, beta, 0.0, destimge);namedWindow("線性混合效果圖");imshow("線性混合效果圖", destimge);waitKey();return 0; } 文件目錄:
運行結果:
總結
以上是生活随笔為你收集整理的C/C++ OpenCV图像的线性混合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6.3.2线索二叉树
- 下一篇: syslog 华为 服务器_删除华为云服