当前位置: 首页 > news >正文

上海专业做网站价格嘉兴网站建设推荐浙江华企

上海专业做网站价格,嘉兴网站建设推荐浙江华企,网站头部优化文字怎么做,百度官网推广平台在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…

在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。

1.备份与修改

备份demo10并修改demo10为demo11.

2.用新队列存放叠加前的图像数据

修改原函数capCam和capScr,用新的inCamQue和inScrQue存放摄像头和桌面图像Mat:


int fmle::capCam() {videoCap.open(0);cv::Mat camMat;while (true){if (!videoCap.isOpened()){Sleep(1);continue;}BOOL ifSuccess = videoCap.read(camMat);if (camMat.empty()){Sleep(1);continue;}if (camMat.cols != backWidth || camMat.rows != backHeight){resize(camMat, camMat, cv::Size(backWidth, backHeight));}if (!camMat.empty()){			EnterCriticalSection(&videoQueLock);tmpVideoQueObj.type = 1;tmpVideoQueObj.tmpMat = camMat;tmpVideoQueObj.dataLen = camMat.cols*camMat.rows * 3;inCamQue.push(tmpVideoQueObj);if (inCamQue.size() >videoDataArrNum){inCamQue.front().dataLen = 0;inCamQue.front().tmpMat.release();inCamQue.front().dataLen = NULL;inCamQue.pop();}LeaveCriticalSection(&videoQueLock);}Sleep(40);}camMat.release();return 0;
}int fmle::capScr(){HWND hwnd = GetDesktopWindow();cv::Mat scrMat;while (true){scrMat = hwndToMat(hwnd);        if (scrMat.cols != backWidth || scrMat.rows != backHeight){resize(scrMat, scrMat, cv::Size(backWidth, backHeight));}if (scrMat.data&&!scrMat.empty()){        cvtColor(scrMat, scrMat, CV_BGRA2BGR);//mainDlg->drawMatOfPub(scrMat);EnterCriticalSection(&videoQueLock);tmpVideoQueObj.type = 1;tmpVideoQueObj.tmpMat = scrMat;tmpVideoQueObj.dataLen = scrMat.cols*scrMat.rows * 3;inScrQue.push(tmpVideoQueObj);if (inScrQue.size() >videoDataArrNum){inScrQue.front().dataLen = 0;inScrQue.front().tmpMat.release();inScrQue.front().dataLen = NULL;inScrQue.pop();}LeaveCriticalSection(&videoQueLock);}Sleep(40);}scrMat.release();    return 0;
}

3.分别从桌面和摄像头队列取数据并叠加

新建一线程,调用mixVideo实现桌面和摄像头图像的叠加

int fmle::mixVideo(){cv::Mat camMat, scrMat, imageROI;while (true){if (inScrQue.size() > 0 && inCamQue.size() > 0){EnterCriticalSection(&videoQueLock);camMat = inCamQue.front().tmpMat.clone();resize(camMat, camMat, cv::Size(120, 80));scrMat = inScrQue.front().tmpMat.clone();if (!camMat.empty() && !scrMat.empty()){imageROI = scrMat(cv::Rect(0, 0, camMat.cols, camMat.rows));addWeighted(imageROI, 0, camMat, 1, 0.0, imageROI);mainDlg->drawMatOfPub(scrMat);}camMat.release();scrMat.release();imageROI.release();LeaveCriticalSection(&videoQueLock);}Sleep(40);}return 0;
}

4.调试运行

效果如下:

http://www.yayakq.cn/news/278395/

相关文章:

  • 哪个网站可以做360度评估虚拟主机建设网站两个
  • 建设主题网站的顺序是什么意思wordpress文章更新插件
  • 求个a站页面seo是什么意思
  • 路桥建设网站怎么把淘宝店放到自己做的网站去
  • 网站建设迅雷浙江建设
  • 南漳县建设局网站免费下载官方百度
  • 手机创建自己网站免费查询个人征信
  • 网站域名申请之后如何做网站台州市网站建设
  • 河南建设监理协会网站6查看网站历史页面
  • 吴家山网站建设公司住房和城乡建设部网站
  • 如何做网站图标建网站的支付安全
  • led灯笼河网站建设网页设计与制作用什么软件
  • 网站1g空间多少钱手机网站建设需要多少钱
  • 做会计一般关注什么网站wordpress忘记后台账号
  • 设计与绘制一个网站首页买网站注册人数
  • 医院网站建设怎么样装修别墅
  • 网站备案域名证书网站调研怎样做
  • 商丘整站优化怎样创建网站桌面快捷方式
  • 百度网站推广怎么样做一个网站平台需要什么
  • 怎么样可以自己做网站大连地区做网站
  • 容桂网站设计制作wordpress 自定义页面模版
  • 冷色网站做网站不用服务器吗
  • 网站地图建设有什么用河北建设工程信息网一体化平台
  • 网站建设包含什么网站建设标语
  • 泰安网站制作电话肇庆高要建设局网站
  • 我的网站突然打不开了怎么回事啊wordpress下载页面
  • 重庆网站建设 观音桥wordpress奇客影院
  • 电子商务网站推广案例找客户的十大方法
  • 网站链接怎么做二维码vps怎么安装wordpress
  • 网络公司做网站后期注意wordpress评论嵌套