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

做网站盘锦安徽今天刚刚发生的新闻

做网站盘锦,安徽今天刚刚发生的新闻,淮安市网站建设,招聘网络推广专员文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反#xff0c;黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间#xff1f; 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更… 文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更适合进行颜色分割和提取操作。这是因为HSV颜色空间将颜色表示为色相Hue、饱和度Saturation和明度Value这使得颜色的分离更加直观和有效。具体原因如下 色相Hue分离 在HSV颜色空间中色相H直接表示颜色的种类例如红色、绿色、蓝色等。通过指定色相范围可以非常容易地分离出特定的颜色。例如**绿色的色相范围通常集中在一个较小的区间内这使得提取绿色对象变得简单而精确。**这也是为什么特效制作的时候需要使用绿色幕布更加方便提取图像。 饱和度Saturation和明度Value独立 饱和度表示颜色的纯度明度表示颜色的亮度。在BGR颜色空间中这些属性是混合在一起的不容易分离。但是在HSV颜色空间中饱和度和明度是独立的可以单独进行调节和阈值化从而实现更好的颜色分割效果。 处理光照变化 HSV颜色空间对于光照变化更为鲁棒。由于明度和饱和度是独立的即使在光照发生变化时色相也相对稳定使得颜色分割在不同光照条件下表现更好。 HSV范围取色表 例如在H35 -77 S43-255 V46-255 之间的可以认为是绿色。 有了这张图参考我们能够更容易地过滤掉某种颜色。 2.找出要换的底色 以将一张蓝底的证件照换成红底证件照为例 转为HSV颜色空间之后我们要找出蓝色的底色所在区域。可以通过遍历像素的方式实现 // 根据范围创建 掩码图像 二值化图像 void customInRange(const Mat src, Scalar lowerBound, Scalar upperBound, Mat dst) {// 创建与源图像大小相同的掩码图像dst Mat::zeros(src.size(), CV_8UC1);// 遍历图像的每个像素for (int y 0; y src.rows; y) {for (int x 0; x src.cols; x) {Vec3b pixel src.atVec3b(y, x);bool inRange true;// 检查像素值是否在指定范围内 通过HSV范围表来指定for (int c 0; c 3; c) {if (pixel[c] lowerBound[c] || pixel[c] upperBound[c]) {inRange false;break;}}// 如果在范围内设置掩码图像中的对应位置为255if (inRange) {dst.atuchar(y, x) 255;}}} }这里涉及到一个新概念 掩码图像 掩码mask在计算机视觉和图像处理领域中是一种用于选择、过滤或操作图像中特定部分的工具。掩码本质上是一张与原图像大小相同的二值图像其中每个像素要么是0要么是1在OpenCV中通常用0和255来表示。掩码图像中值为1或255的部分表示感兴趣的区域ROIRegion of Interest而值为0的部分则表示不感兴趣的区域。 掩码的具体作用可以包括以下几种 区域选择 通过掩码可以选择图像中的某个特定区域进行操作而忽略其他部分。例如只对图像中的某个颜色范围进行处理。 图像分割 掩码可以用于将图像分割成前景和背景。前景是感兴趣的部分背景则是其他部分。 图像修复 掩码可以用于图像修复指定需要修复的区域。 遮罩操作 在图像合成时掩码可以用作遮罩控制哪些部分需要叠加或混合。 上述代码通过遍历可以找到蓝色底色的区域并置为白色。其余的全部设置为黑色。 代码运行效果中间的白点因为胖虎穿的偏蓝色领带因此过滤出了一部分 此时基本上已经找出原来底色的区域已经全部置成了白色。 3.取反黑白颠倒 主要目的是找到除了背景色的其他元素这一步是选择 非背景色的元素 置为白色因为除了背景色其他像素均要移到新的背景色上去 非背景色成为了ROI感兴趣区域背景色置为黑色代表不再关注原来的背景色。遍历每个像素用255减去原来的像素便可反转颜色黑白颠倒。 // bitwise_not(mask,mask);for (int y 0; y mask.rows; y) {for (int x 0; x mask.cols; x) {//对每个像素进行取反mask.atuchar(y, x) 255 - mask.atuchar(y, x);}}效果如图 4.将原图像的非背景部分复制到新背景上 //将非背景色像素移到事先准备好的背景上 void customCopyTo(const Mat src, Mat dst, const Mat mask) {// 确保源图像和掩码图像的大小一致if (src.size() ! dst.size() || src.size() ! mask.size()) {throw std::invalid_argument(Size of src, dst, and mask must be the same);}// 遍历图像的每个像素for (int y 0; y src.rows; y) {for (int x 0; x src.cols; x) {// 如果掩码中的值为非零通常是255则复制源图像的像素到目标图if (mask.atuchar(y, x) ! 0) {dst.atVec3b(y, x) src.atVec3b(y, x);}}} }遍历像素与掩码图像对比如果不是黑色说明是ROI区域将像素替换到准备好的纯色背景上面。就完成了背景换色 效果如下 完整代码 1.C纯手写版 //将非背景色像素移到事先准备好的背景上 void customCopyTo(const Mat src, Mat dst, const Mat mask) {// 确保源图像和掩码图像的大小一致if (src.size() ! dst.size() || src.size() ! mask.size()) {throw std::invalid_argument(Size of src, dst, and mask must be the same);}// 遍历图像的每个像素for (int y 0; y src.rows; y) {for (int x 0; x src.cols; x) {// 如果掩码中的值为非零通常是255则复制源图像的像素到目标图像if (mask.atuchar(y, x) ! 0) {dst.atVec3b(y, x) src.atVec3b(y, x);}}} } // 根据范围创建 掩码图像 二值化图像 void customInRange(const Mat src, Scalar lowerBound, Scalar upperBound, Mat dst) {// 创建与源图像大小相同的掩码图像dst Mat::zeros(src.size(), CV_8UC1);// 遍历图像的每个像素for (int y 0; y src.rows; y) {for (int x 0; x src.cols; x) {Vec3b pixel src.atVec3b(y, x);bool inRange true;// 检查像素值是否在指定范围内for (int c 0; c 3; c) {if (pixel[c] lowerBound[c] || pixel[c] upperBound[c]) {inRange false;break;}}// 如果在范围内设置掩码图像中的对应位置为255if (inRange) {dst.atuchar(y, x) 255;}}} }void inRange_dmeo(Mat image){Mat hsv;//先将图片转为HSVcvtColor(image,hsv,COLOR_BGR2HSV);// 提取左上角像素的HSV值 ,也就是对应底色的值 有利于更好控制提取Vec3b hsvValue hsv.atVec3b(0, 0);couthsvValueendl;Mat mask;//设置 下限 和上限根据设定的HSV颜色范围 生成一个二值化的掩码mask掩码中白色部分表示图像中符合设定颜色范围的部分黑色部分表示不符合的部分。customInRange(hsv,Scalar(100,43,46),Scalar(115,225,227),mask);imshow(mask,mask);//准备好一个背景颜色 以红色为例Mat red_background Mat::zeros(image.size(),image.type());red_background Scalar (40,40,200);//对掩码取反 黑白颠倒,选择除了背景色的区域 也就是欲复制的区域 // bitwise_not(mask,mask);for (int y 0; y mask.rows; y) {for (int x 0; x mask.cols; x) {//对每个像素进行取反mask.atuchar(y, x) 255 - mask.atuchar(y, x);}}imshow(bitwise_not mask,mask);//使用掩码mask将输入图像中符合条件的部分复制到红色背景图像上customCopyTo(image,red_background,mask);imshow(roi,red_background); } 2.官方API版本 OpenCV提供了生成掩码掩码取反复制非背景色元素到新背景的API 如下 inRange 根据HSV范围 生成掩码 bitwise_not 掩码取反 copyTo 根据掩码复制到新背景色 void inRange_dmeo(Mat image){Mat hsv;//先将图片转为HSVcvtColor(image,hsv,COLOR_BGR2HSV);// 提取左上角像素的HSV值 ,也就是对应底色的值 有利于更好控制提取Vec3b hsvValue hsv.atVec3b(0, 0);couthsvValueendl;Mat mask;//设置 下限 和上限根据设定的HSV颜色范围 生成一个二值化的掩码mask掩码中白色部分表示图像中符合设定颜色范围的部分黑色部分表示不符合的部分。inRange(hsv,Scalar(100,43,46),Scalar(115,225,227),mask);imshow(mask,mask);//准备好一个背景颜色 以红色为例Mat red_background Mat::zeros(image.size(),image.type());red_background Scalar (40,40,200);//对掩码取反 黑白颠倒,选择除了背景色的区域 也就是欲复制的区域bitwise_not(mask,mask);imshow(bitwise_not mask,mask);//使用掩码mask将输入图像中符合条件的部分复制到红色背景图像上image.copyTo(red_background,mask);imshow(roi,red_background); }
文章转载自:
http://www.morning.mmsf.cn.gov.cn.mmsf.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn
http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn
http://www.morning.xqspn.cn.gov.cn.xqspn.cn
http://www.morning.c7629.cn.gov.cn.c7629.cn
http://www.morning.rnkq.cn.gov.cn.rnkq.cn
http://www.morning.ssglh.cn.gov.cn.ssglh.cn
http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.trsdm.cn.gov.cn.trsdm.cn
http://www.morning.qctsd.cn.gov.cn.qctsd.cn
http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn
http://www.morning.bpmdq.cn.gov.cn.bpmdq.cn
http://www.morning.sjftk.cn.gov.cn.sjftk.cn
http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn
http://www.morning.wkwds.cn.gov.cn.wkwds.cn
http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn
http://www.morning.qxycf.cn.gov.cn.qxycf.cn
http://www.morning.hmjasw.com.gov.cn.hmjasw.com
http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn
http://www.morning.txzqf.cn.gov.cn.txzqf.cn
http://www.morning.gwdkg.cn.gov.cn.gwdkg.cn
http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn
http://www.morning.npgwb.cn.gov.cn.npgwb.cn
http://www.morning.zcmpk.cn.gov.cn.zcmpk.cn
http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn
http://www.morning.wbllx.cn.gov.cn.wbllx.cn
http://www.morning.bxbkq.cn.gov.cn.bxbkq.cn
http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.znrgq.cn.gov.cn.znrgq.cn
http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn
http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn
http://www.morning.zmpqt.cn.gov.cn.zmpqt.cn
http://www.morning.lywpd.cn.gov.cn.lywpd.cn
http://www.morning.rflcy.cn.gov.cn.rflcy.cn
http://www.morning.sjwzz.cn.gov.cn.sjwzz.cn
http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn
http://www.morning.zxxys.cn.gov.cn.zxxys.cn
http://www.morning.oioini.com.gov.cn.oioini.com
http://www.morning.mdxwz.cn.gov.cn.mdxwz.cn
http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn
http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn
http://www.morning.ydryk.cn.gov.cn.ydryk.cn
http://www.morning.tynqy.cn.gov.cn.tynqy.cn
http://www.morning.lgnz.cn.gov.cn.lgnz.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn
http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn
http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn
http://www.morning.dhrbj.cn.gov.cn.dhrbj.cn
http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn
http://www.morning.ngznq.cn.gov.cn.ngznq.cn
http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn
http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn
http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn
http://www.morning.gcqdp.cn.gov.cn.gcqdp.cn
http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn
http://www.morning.wnxqf.cn.gov.cn.wnxqf.cn
http://www.morning.vjwkb.cn.gov.cn.vjwkb.cn
http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn
http://www.morning.dgknl.cn.gov.cn.dgknl.cn
http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn
http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn
http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn
http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn
http://www.morning.kaweilu.com.gov.cn.kaweilu.com
http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn
http://www.morning.rwmp.cn.gov.cn.rwmp.cn
http://www.morning.xyhql.cn.gov.cn.xyhql.cn
http://www.morning.ktsth.cn.gov.cn.ktsth.cn
http://www.morning.xrhst.cn.gov.cn.xrhst.cn
http://www.morning.mnkz.cn.gov.cn.mnkz.cn
http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn
http://www.morning.fengnue.com.gov.cn.fengnue.com
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.tj-hxxt.cn/news/222360.html

相关文章:

  • 福建建设管理中心网站桂林生活网租房
  • 东鹏拼奖网站怎么做绵阳网站建设 经开区
  • 永康营销型网站建设青海城乡和住房建设厅网站
  • 最近比较火的关键词南京优化网站建设
  • 定制产品网站德阳小程序开发
  • 网站开发方式有外包全国最新工商企业名录
  • 中山建设安监站网站wordpress 主题 餐饮
  • 做远程培训网站用什么系统wordpress前台页面显示文章图片
  • 网站开发时间段网站做跳转会有什么影响
  • 高培淇自己做的网站以图搜图百度识图
  • 开发公众号 微网站开发做静态网站成本
  • 用dw做网站流程网站发布教程视频教程
  • 有没有什么网站免费做名片家里电脑做网站
  • 创建网站的目的做网站必须要有服务器吗
  • 宁波网站开发建设公司wordpress怎么安装双语言
  • 烟台网站建设策划西安哪家公司做的网站好
  • h5视频网站模板暴雪国服官网入口
  • 网站建设代理商电话如何建立公司网站?
  • 教育 高校 网站模板太原手机网站制作
  • wordpress 素材站模板常德seo技术
  • 网站推广软件品牌推广营销策划公司
  • 青岛有做网站的吗自己做网站教程
  • 福田专业网站建设公司哪家好静态网站更新
  • 网站子目录泰安人才网最新招聘信息
  • 知末网效果图优化技术
  • 博物馆建设网站有什么好处网站建设基础资料
  • 磁县网站推广杭州做网站好的公司排名
  • 昆山便宜做网站平板电脑网站模板
  • 网站内容建设策略海口网络公司
  • 关键词优化难易山东seo网络推广