做3d动画视频接私活的网站/苏州seo按天扣费

做3d动画视频接私活的网站,苏州seo按天扣费,浅谈天猫的电子商务网站建设,国外网站模板下载第三节 图像颜色处理 1.颜色比较2.GrabCut分割图像3.色调、饱和度以及亮度 1.颜色比较 主要实现逐像素的颜色比较,其中注意BGR颜色空间不连续,不利于颜色提取和区分,转换到Lab空间: int getColorDistance(const cv::Vec3b& c…

第三节 图像颜色处理

  • 1.颜色比较
  • 2.GrabCut分割图像
  • 3.色调、饱和度以及亮度

1.颜色比较

主要实现逐像素的颜色比较,其中注意BGR颜色空间不连续,不利于颜色提取和区分,转换到Lab空间:

	  int getColorDistance(const cv::Vec3b& color1, const cv::Vec3b& color2) const {// 方法一return abs(color1[0]-color2[0])+abs(color1[1]-color2[1])+abs(color1[2]-color2[2]);// 方法二return static_cast<int>(cv::norm<int,3>(cv::Vec3i(color[0]-color2[0],color[1]-color2[1],color[2]-color2[2])));// 方法三 直接使用函数cv::Vec3b dist;cv::absdiff(color,color2,dist);return cv::sum(dist)[0];}// 使用指针遍历图像进行颜色比较Mat process(const Mat &image) {// same size as input image, but 1-channelresult.create(image.size(),CV_8U);// Converting to Lab color space  if (useLab)cv::cvtColor(image, converted, cv::COLOR_BGR2Lab);// get the iteratorsMat_<cv::Vec3b>::const_iterator it= image.begin<Vec3b>();Mat_<cv::Vec3b>::const_iterator itend= image.end<Vec3b>();Mat_<uchar>::iterator itout= result.begin<uchar>();// get the iterators of the converted image if (useLab) {it = converted.begin<cv::Vec3b>();itend = converted.end<cv::Vec3b>();}// 指针遍历for ( ; it!= itend; ++it, ++itout) {// compute distance from target colorif (getDistanceToTargetColor(*it)<maxDist) {*itout= 255;} else {*itout= 0;}// end of pixel processing ----------------}return result;
}

2.GrabCut分割图像

floodFill函数,支持用户选择种子点,opencv依据差异值进行快速处理,比如office中的设置透明色,就类似于该算法的实现

	// testing floodfillcv::floodFill(image,            // input/ouput imagecv::Point(100, 50),         // seed pointcv::Scalar(255, 255, 255),  // repainted color(0,0,0)则是黑色(cv::Rect*)0,  // bounding rectangle of the repainted pixel setcv::Scalar(35, 35, 35),     // low and high difference thresholdcv::Scalar(35, 35, 35),     // most of the time will be identicalcv::FLOODFILL_FIXED_RANGE); // pixels are compared to seed colorcv::namedWindow("Flood Fill result");result = colordetector(image);

GrabCut分割图像通过用户标记前景框,算法为2004年提出,主要是将图像依据颜色相似进行图块分割,然后再使用边缘特征进一步分割,将问题转化为连通图的合并问题,最后以四种类型作为结果输出

	// define bounding rectangle cv::Rect rectangle(50,25,210,180);// the models (internally used)cv::Mat bgModel,fgModel; // segmentation resultcv::Mat result; // segmentation (4 possible values)// GrabCut segmentationcv::grabCut(image,    // input imageresult,   // segmentation resultrectangle,// rectangle containing foreground bgModel, fgModel, // models5,        // number of iterationscv::GC_INIT_WITH_RECT); // use rectangle// Get the pixels marked as likely foreground GC_PR_FGD有四种不同分类结果cv::compare(result,cv::GC_PR_FGD,result,cv::CMP_EQ);// or://	result= result&1;

两种方法对比图下,GrabCut能够有效保留前景要素边缘特征
在这里插入图片描述
最终基于边框提取前景要素:
在这里插入图片描述

3.色调、饱和度以及亮度

将图像转换到连续空间Lab进行处理往往可以获得更为连续的结果,而HSV颜色表示更加符合人类视觉感知

cv::cvtColor(image, hsv, cv::COLOR_BGR2HSV);
cv::cvtColor(hsv,newImage, cv::COLOR_HSV2BGR);
cv::cvtColor(image,brightness, cv::COLOR_Lab2BGR);void detectHScolor(const cv::Mat& image,		// input image double minHue, double maxHue,	// Hue interval double minSat, double maxSat,	// saturation intervalcv::Mat& mask) {				// output mask// convert into HSV spacecv::Mat hsv;cv::cvtColor(image, hsv, cv::COLOR_BGR2HSV);// split the 3 channels into 3 imagesstd::vector<cv::Mat> channels;cv::split(hsv, channels);// channels[0] is the Hue// channels[1] is the Saturation// channels[2] is the Value// Hue maskingcv::Mat mask1; // below maxHuecv::threshold(channels[0], mask1, maxHue, 255, cv::THRESH_BINARY_INV);cv::Mat mask2; // over minHuecv::threshold(channels[0], mask2, minHue, 255, cv::THRESH_BINARY);cv::Mat hueMask; // hue maskif (minHue < maxHue)hueMask = mask1 & mask2;else // if interval crosses the zero-degree axishueMask = mask1 | mask2;// Saturation masking// below maxSatcv::threshold(channels[1], mask1, maxSat, 255, cv::THRESH_BINARY_INV);// over minSatcv::threshold(channels[1], mask2, minSat, 255, cv::THRESH_BINARY);cv::Mat satMask; // saturation masksatMask = mask1 & mask2;// combined maskmask = hueMask&satMask;
}

诸如人体皮肤再HSV颜色域中具有显著的特征
在这里插入图片描述

该节相关代码已上传到个人文档,按需下载链接: 点击下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BoomCut AI 技术创建本地化的营销视频

目录 视频翻译实验 交换实验 数字人实验 核心功能与技术亮点 适用场景 BoomCut 提供用于视频翻译、数字人等的 AI 技术,以快速创建本地化的营销视频 视频翻译实验 电影电影哪吒之魔童降世换成西班牙语

论华为 Pura X 折叠屏性能检测

在科技浪潮中&#xff0c;折叠屏手机以其创新形态掀起市场热潮。华为 Pura X 作为华为最新折叠手机&#xff0c;承载前沿科技与精湛工艺&#xff0c;成为行业焦点。它融合先进折叠屏技术与优质材质&#xff0c;致力于打破传统手机使用边界&#xff0c;为用户开启全新体验。但产…

【蓝桥杯每日一题】3.25

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x “OJ超时不是终点&#xff0c;是算法在提醒你该优化时间复杂度了&#xff01;” 目录 3.25 差分数组 一、一维差分 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a;…

3.25学习总结 抽象类和抽象方法+接口+内部类+API

抽象类和抽象方法&#xff1a; 有抽象方法&#xff0c;那么类肯定是抽象类。父类不一定是抽象的&#xff0c;但如果父类中有抽象方法那一定是抽象类。 如果子类中都存在吃这个行为&#xff0c;但吃的具体东西不同&#xff0c;那么吃这个行为定义在父类里面就是抽象方法&#x…

全面系统梳理多模态LLM对齐算法

1.alignment算法发展时间轴 2.MLMM alignment结构图 3.目前alignment策略常见的损失函数形式 4.MLLM对齐数据构造与现有数据总结

广告推荐算法 - 学习笔记

文章目录 1、前言2、学习笔记2.1、什么是计算广告系统&#xff1f; 1、前言 本篇博客&#xff0c;是我用来记录学习广告推荐算法的一些笔记和总结。 参考内容&#xff1a; 1、王喆&#xff1a;"深度"学习计算广告 2、deepseek 2、学习笔记 2.1、什么是计算广告系统…

ENSP学习day10

NAT地址转换技术&#xff08;一&#xff09; NAT&#xff08;Network Address Translation&#xff09;地址转换技术是一种在计算机网络中常用的技术&#xff0c;在数据包从一个网络传输到另一个网络时&#xff0c;会对数据包中的源IP地址和目的IP地址进行修改的过程。这种技术…

Swift 二分法求函数的近似解

在实际开发中会遇到一些工程问题&#xff0c;需要求解复杂函数方程的问题。使用传统的数学方法比较难以处理。本文将使用二分法不断获取一个函数的近似解。 二分法&#xff1a;其基本思想是利用函数在某个区间内的连续性&#xff0c;通过不断缩小区间范围来逼近方程的解。 算法…

stanley 路径跟踪控制算法

文章目录 写在前面的话算法思路核心代码1 路径发布2 获取车子当前位置3 预瞄路径点4 计算航向误差5 计算横向误差 完整控制代码演示视频 写在前面的话 轨迹跟踪 Trajectory Tracking 和 路径跟踪 Path Following 是机器人控制和自动驾驶领域中的两个核心概念&#xff0c;尽管它…

Qt中通过QLabel实时显示图像

Qt中的QLabel控件用于显示文本或图像&#xff0c;不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…

pyQt学习笔记——Qt资源文件(.qrc)的创建与使用

Qt资源文件&#xff08;.qrc&#xff09;的创建与使用 1. 选择打开资源2. 创建新资源3. 添加资源文件夹4. 选择要加载的图片文件5. 编译resource.qrc文件6. 替换PySlide6为PyQt57. 其他说明 1. 选择打开资源 在Qt项目中&#xff0c;可以通过windowIcon点击选择打开资源。 2. 创…

光电效应及普朗克常数的测定数据处理 Python实现

内容仅供参考&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;如有疑问&#xff0c;欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP &#xff08;分段三次埃尔米特插值多项式&#xff09; 因为实验时记录的数…

2025最新3个wordpress好用的主题

红色大气的wordpress企业主题&#xff0c;适合服务行业的公司搭建企业官方网站使用。是一款专为中小企业和个人开发者设计的WordPress主题&#xff0c;旨在提供专业的网站构建解决方案。 通过此WordPress主题&#xff0c;用户可以轻松创建和维护一个专业的企业网站&#xff0c…

OLLVM 增加 CC++ 字符串加密功能

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 当我们如果没有对字符串进行加密&#xff0c;使用 IDA 反汇编一下 so 可以看到 C 代码中的字符串就直接暴露了。 字符串加密原理 sobf.c #include <…

自动化逆向框架使用(Objection+Radare2)

1. 工具链架构与核心优势 1.1 动静结合逆向体系 graph LR A[动态分析] -->|Objection实时Hook| B[关键点定位] B --> C[行为数据捕获] D[静态分析] -->|Radare2深度解析| E[控制流重建] E --> F[漏洞模式识别] B --> F C --> F 组合优势对比&…

Docker-Volume数据卷详讲

Docker数据卷-Volume 一&#xff1a;Volume是什么&#xff0c;用来做什么的 当删除docker容器时&#xff0c;容器内部的文件就会跟随容器所销毁&#xff0c;在生产环境中我们需要将数据持久化保存&#xff0c;就催生了将容器内部的数据保存在宿主机的需求&#xff0c;volume …

单片机和微控制器知识汇总——《器件手册--单片机、数字信号处理器和可编程逻辑器件》

目录 四、单片机和微控制器 4.1 单片机(MCU/MPU/SOC) 一、定义 二、主要特点 三、工作原理 四、主要类型 五、应用领域 六、选型与设计注意事项 七、发展趋势 4.2 数字信号处理器(DSP/DSC) ​编辑​编辑 一、定义 二、工作原理 三、结构特点 四、应用领域 五、选型与设计注…

高数下---8.1平面与直线

目录 平面的确定 直线的确定 若要求某一直线或平面就根据要素来求。 例题 平面中的特殊情况 平面中的解题思路 直线的解题思路 平面的确定 两要素 一 一点 二 倾斜角 即法向量 点法式 可化为一般式 Ax By Cz D 0; (A,B,C) 即法向量&#xff1b; 改变D 即…

CMS迁移中SEO优化整合步骤详解

内容概要 在CMS迁移过程中&#xff0c;系统化的规划与执行是保障SEO排名稳定性的核心。首先需明确迁移流程的关键阶段&#xff0c;包括数据备份、URL适配、元数据同步及安全配置等环节。其中&#xff0c;数据备份不仅需覆盖原始数据库与静态资源&#xff0c;还需验证备份文件的…

Python:进程间的通信,进程的操作队列

进程间的队列&#xff1a; 队列的基本操作&#xff1a; 入队&#xff1a;将数据放到队列尾部 出队&#xff1a;从队列的头部取出一个元素 maxsize&#xff1a;队列中能存放数据个数的上限(整数)&#xff0c;一旦达到上限插入会导致阻塞&#xff0c;直到队列中的数据被消费掉 …