
Goals
- 了解线性混合
- 使用
addWeighted() 混合两张图像
Code
C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
int (int argc, char *argv[]) { std::string imagePath1 = "./japan.jpg"; std::string imagePath2 = "./beach.jpg"; cv::Mat src1 = cv::imread(imagePath1); cv::Mat src2 = cv::imread(imagePath2); if (src1.empty() || src2.empty()) { std::cout << "Can't load images!" << std::endl; return -1; } cv::Mat dst; double alpha = 0.5; double beta = 1 - alpha; cv::addWeighted(src1, alpha, src2, beta, 0.0, dst); cv::imshow("dst", dst); cv::waitKey(); cv::destroyAllWindows(); return 0; }
|
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
def (): image_path1 = './japan.jpg' image_path2 = './beach.jpg' src1 = cv2.imread(image_path1) src2 = cv2.imread(image_path2) if src1 is None or src2 is None: print("Can't open images!") return alpha = 0.5 beta = 1 - alpha dst = cv2.addWeighted(src1, alpha, src2, beta, 0.0) cv2.imshow("dst", dst) cv2.waitKey() cv2.destroyAllWindows()
if __name__ == "__main__": main()
|
Explanation
上述代码首先分别读取两张分辨率相同的图像,然后使用 addWeighted 函数将两者以 g(x, y) = alpha * f(x, y) + beta * h(x, y) 混合一起,,并显示出来。
Reference
近期评论