首页 > 编程知识 正文

绿幕抠图视频素材,动漫素材在哪里找

时间:2023-05-05 03:05:34 阅读:13196 作者:3880

绿色窗帘背景视频的关键点要求实时性,使用kmeans或GMM会将RGB空间转换为HSV颜色空间进行处理,因为太费时间而达不到要求

关于HSV中的颜色分量范围,请参阅本博客。 http://blog.csdn.net/linqian bi/article/details/78975998

绿色窗帘背景视频缩略图流程图:

让我们看看代码:

# include opencv2(opencv.hppusingnamespacecv;//定义两张背景图Mat background_01的Mat background_02; Mat background_03; //抠绿色窗帘的实现函数matreplace_and_blend(matframe,Mat mask ); int main () background_01=imread('1.jpg ); background_02=imread('2.jpg ); background_03=imread('3.jpg ); //导入视频捕获; capture.open('01.MP4 ); if (! capture.isOpened () (printf ) ' couldnotopencapture.n ' ); 返回- 1; }char * title='导入视频'; char * resultWin='效果图'; 名称窗口(title,CV_WINDOW_AUTOSIZE ); 名称窗口(result win,CV_WINDOW_AUTOSIZE ); 马特框架; //定义存储各帧图像Mat hsv,mask的Mat变量; //每帧的图像while(capture.read ) frame ) )//将每帧的图像转换为hsv空间cvtcolor (frame,hsv,COLOR_BGR2HSV ) )时; //绿色窗帘的颜色范围,相对于结果在mask中存在inrange(HSV、Scalar ) 35、43、46、Scalar ) 155、255、255 )、mask )的mask,形成形态学对//mask进行形态学闭操作morphologyex(mask,mask,MORPH_CLOSE,k ); erode (掩码,掩码,k ); //高斯模糊Gaussian blur (掩码,掩码,大小) 3,3 ),0,0 ); mat result=replace _ and _ blend (frame,mask ); charc=等待密钥(30; //延迟按30msif(c==27 )//ESC退出break; imshow(title,frame ); imshow(resultwin,result ); }等待密钥(0; 返回0; //matreplace _ and _ blend (最大帧,最大掩码)//结果贴图matresult=mat ) frame.size ),frame.type ),用于处理视频的每帧的图像int width=result.cols; int channels=result.channels (; //int nStep=width*channels;//替换和混合int m=0; //mask的像素值double wt=0; //融合的比例int r=0,g=0,b=0; //输出的像素int r1=0,g1=0,b1=0; int r2=0,g2=0,b2=0; for(intI=0; i height; I )//定义指向每行中每个帧图像的指针、指向mask图像的指针、指向两张背景图的指针,指向结果图的指针uchar * PBG=background _ 03.ptr uchar (I ); uchar*pframe=frame.ptruchar(I; uchar*pmask=mask.ptruchar(I; uchar * presult=result.ptr uchar (I; for(intj=0; j width; j ) {m=*pmask; 读取mask像素值if (m==255 ) ) /如果是背景)//进行3通道的代入) *presult =*pbg; *presult =*pbg; *presult =*pbg; p帧=3; 移动一个帧图像像素通道以匹配(如果elseif(m==0)//前景)//进行三个通道的赋值) *presult =*pframe; * presult=* p帧; * presult=* p帧; pbg =3; 帧图像的像素通道也移动一个以匹配(else )//背景图每个像素的三通道b1=*pbg; g1=*pbg; r1=*pbg;//每帧每像素3通道B2=* p帧; G2=* p帧; R2=* p帧; //权重wt=m/255.0; //混合B=B1*WTB2*(1.0-WT ); g=G1*WTG2*(1.0-WT ); r=R1*wtR2*(1.0-wt ); *presult =b; *presult =g; *presult =r; } }返回结果; }

原始视频图像:

效果视频:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。