图像混合

Makefile文件:
CXX ?= g++

CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv)
LDFLAGS += $(shell pkg-config --libs --static opencv)

all: picture_mixed

picture_mixed: picture_mixed.o; $(CXX) $< -o $@ $(LDFLAGS)

%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)

clean: ; rm -f picture_mixed.o picture_mixed
图像混合程序:
#include <opencv2/opencv.hpp>#include <iostream>#define WINDOW_NAME "图像混合示例"using namespace std;using namespace cv;int g_nMaxValue = 100;int g_nValueSlider = 50;double alpha;double belta;Mat srcImg1;Mat srcImg2;Mat dstImg;//图像混合与显示函数void alphaValueChange(int,void *){ alpha = (double)g_nValueSlider/g_nMaxValue; belta = (1 - alpha); addWeighted(srcImg1,alpha,srcImg2,belta,0.0,dstImg); imshow(WINDOW_NAME,dstImg);}int main(int argc,char *argv[]){ if(argc!=3) { cout<<"input error"<<endl; return 0; } int max_col,max_row; //读取两幅图像 srcImg1 = imread(argv[1]); srcImg2 = imread(argv[2]); if(!srcImg1.data||!srcImg2.data) { cout<<"the picture is empty!"<<endl; return -1; } //改变图像的大小 if(srcImg1.rows>srcImg2.rows) max_row = srcImg1.rows; else max_row = srcImg2.rows; if(srcImg1.cols>srcImg1.cols) max_col = srcImg1.cols; else max_col = srcImg2.cols; resize(srcImg1,srcImg1,Size(max_row,max_col)); resize(srcImg2,srcImg2,Size(max_row,max_col)); namedWindow(WINDOW_NAME); createTrackbar("Mixed",WINDOW_NAME,&g_nValueSlider,g_nMaxValue,alphaValueChange); alphaValueChange(0,0); waitKey(0); return 0;}

原图:

alpha=0.5的混合图像:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值