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

美食网站联系我们怎么做设计个人网站

美食网站联系我们怎么做,设计个人网站,广告设计学什么内容,乾安网站建设操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能,它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

功能描述

        ffloodFill函数是OpenCV库中用于图像处理的一个功能,它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用,比如图像分割、对象填充或改变图像中某个区域的颜色等。

        连通性的判断基于邻近像素的颜色或亮度接近程度。如果像素位于(x,y)处被认为属于要重新上色的连通域,需满足以下条件:

  • 对于灰度图像和浮动范围的情况:
    src ( x ′ , y ′ ) − loDiff ≤ src ( x , y ) ≤ src ( x ′ , y ′ ) + upDiff \texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff} src(x,y)loDiffsrc(x,y)src(x,y)+upDiff
  • 对于灰度图像和固定范围的情况:
    src ( seedPoint . x , seedPoint . y ) − loDiff ≤ src ( x , y ) ≤ src ( seedPoint . x , seedPoint . y ) + upDiff \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff} src(seedPoint.x,seedPoint.y)loDiffsrc(x,y)src(seedPoint.x,seedPoint.y)+upDiff
  • 对于彩色图像和浮动范围的情况:
    src ( x ′ , y ′ ) r − loDiff r ≤ src ( x , y ) r ≤ src ( x ′ , y ′ ) r + upDiff r , \texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r, src(x,y)rloDiffrsrc(x,y)rsrc(x,y)r+upDiffr, src ( x ′ , y ′ ) g − loDiff g ≤ src ( x , y ) g ≤ src ( x ′ , y ′ ) g + upDiff g \texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g src(x,y)gloDiffgsrc(x,y)gsrc(x,y)g+upDiffg
    并且:
    src ( x ′ , y ′ ) b − loDiff b ≤ src ( x , y ) b ≤ src ( x ′ , y ′ ) b + upDiff b \texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b src(x,y)bloDiffbsrc(x,y)bsrc(x,y)b+upDiffb
  • 对于彩色图像和固定范围的情况:
    src ( seedPoint . x , seedPoint . y ) r − loDiff r ≤ src ( x , y ) r ≤ src ( seedPoint . x , seedPoint . y ) r + upDiff r , \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r, src(seedPoint.x,seedPoint.y)rloDiffrsrc(x,y)rsrc(seedPoint.x,seedPoint.y)r+upDiffr, src ( seedPoint . x , seedPoint . y ) g − loDiff g ≤ src ( x , y ) g ≤ src ( seedPoint . x , seedPoint . y ) g + upDiff g \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g src(seedPoint.x,seedPoint.y)gloDiffgsrc(x,y)gsrc(seedPoint.x,seedPoint.y)g+upDiffg
    并且:
    src ( seedPoint . x , seedPoint . y ) b − loDiff b ≤ src ( x , y ) b ≤ src ( seedPoint . x , seedPoint . y ) b + upDiff b \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b src(seedPoint.x,seedPoint.y)bloDiffbsrc(x,y)bsrc(seedPoint.x,seedPoint.y)b+upDiffb
    其中 s r c ( x ′ , y ′ ) src(x',y') src(x,y)是已经被判定属于该连通组件的某个邻居像素的值。要被添加到连通组件中,像素的颜色或亮度应该足够接近:
  • 如果使用浮动范围,它应该接近其一个已经属于连通组件的邻居的颜色或亮度。
  • 如果使用固定范围,它应该接近种子点的颜色或亮度。

这些函数可用于以下操作:

  • 直接在原图上用指定的颜色标记一个连通组件。
  • 构建一个掩模,然后提取轮廓。
  • 复制区域到另一个图像,等等。

函数原型1


int cv::floodFill	
(InputOutputArray 	image,InputOutputArray 	mask,Point 	seedPoint,Scalar 	newVal,Rect * 	rect = 0,Scalar 	loDiff = Scalar(),Scalar 	upDiff = Scalar(),int 	flags = 4 
)		

参数1

  • 参数image:输入/输出的1-或3-通道、8位或浮点图像。除非在函数的第二个变体中设置了FLOODFILL_MASK_ONLY标志,否则该图像将被函数修改。详情请见下方说明。
  • 参数mask:操作掩模,应当是一个比图像宽2像素、高2像素的单通道8位图像。如果传递空的Mat对象,它将被自动创建。由于这是一个输入和输出参数,你必须负责初始化它。洪水填充不会跨越输入掩模中非零像素。例如,边缘检测的输出可以用作掩模,以在边缘处停止填充。输出时,掩模中对应于图像中填充像素的像素将被设置为1或在flags中指定的值,如下文所述。此外,函数会在掩模的边界填充1,以简化内部处理。因此,可以在多次调用函数时使用同一掩模,以确保填充的区域不会重叠。
  • 参数seedPoint:填充的起始点。
  • 参数newVal:重绘区域像素的新值。
  • 参数loDiff:当前观察像素与其属于同一连通组件的邻居像素,或加入连通组件的种子像素之间的最大下限亮度/颜色差异。
  • 参数upDiff:当前观察像素与其属于同一连通组件的邻居像素,或加入连通组件的种子像素之间的最大上限亮度/颜色差异。
  • 参数rect:可选的输出参数,由函数设置为重绘区域的最小边界矩形。
  • 参数flags:操作标志。前8位包含连通性值。默认值4意味着仅考虑四个最近邻像素(那些共享边缘的像素)。连通性值8意味着将考虑八个最近邻像素(那些共享角落的像素)。接下来的8位(8-16位)包含一个1到255之间的值,用于填充掩模(默认值是1)。例如,4 | ( 255 << 8 )将考虑四个最近邻并用255填充掩模。以下附加选项占据更高位,因此可以使用按位或(|)与连通性和掩模填充值进一步组合,请参阅FloodFillFlags。

注释
       由于掩模比填充的图像大,图像中的像素(x,y)对应于掩模中的像素(x+1,y+1)。

另见:

findContours:查找轮廓的函数。

函数原型2


int cv::floodFill	
(InputOutputArray 	image,Point 	seedPoint,Scalar 	newVal,Rect * 	rect = 0,Scalar 	loDiff = Scalar(),Scalar 	upDiff = Scalar(),int 	flags = 4 
)		

参数2

比原型1少了个mask参数,其他参数都一样。

代码示例

include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg" );if ( img.empty() ){std::cout << "Could not read the image" << std::endl;return -1;}cv::Point seedPoint( 359, 578 );  // 假设种子点为(359, 578)cv::Scalar newVal( 255, 0, 0 );   // 新的颜色值为蓝色cv::Rect roi;int flags = 8;// 进行填充cv::floodFill( img, seedPoint, newVal, &roi, cv::Scalar( 1, 1, 1 ), cv::Scalar( 40, 40, 40 ), 8 );// 显示结果cv::imshow( "Flood Fill Result", img );cv::waitKey();return 0;
}

运行结果

原图:
在这里插入图片描述
运算之后的图:
蓝色部分就是填充的部分,参数loDiff为Scalar(1, 1, 1),upDiff为Scalar(40, 40, 40),表示当前观测点的像素X与周围已被填充的像素点数值Y,需满足X-Y<10,且Y-X<1,才被填充。

在这里插入图片描述

http://www.ds6.com.cn/news/116012.html

相关文章:

  • 大麦网建设网站的功能定位3小时百度收录新站方法
  • 不会做网站如何做seo营销型网站特点
  • 做网站的时候怎么设置背景广州优化营商环境条例
  • 做外贸的网站看啥书百度提交网站入口
  • 服务好的网站制作建设厦门seo计费
  • 做sohu最好的推广网站成人大专
  • 网站的登录注册怎么做官方网站怎么查询
  • 阜阳网站建设价格91永久海外地域网名
  • 网站线框图用什么做近期发生的新闻
  • 农村建设房子建设网站建设百度指数排名
  • 建个人网站做导购怎么在网上做广告
  • 燕郊网站建设哪家好北京seo顾问外包
  • 餐饮网站开发毕业设计模板seo引擎优化软件
  • wordpress管理工具长春做网络优化的公司
  • 建设班级网站首页深圳经济最新新闻
  • 微信小程序做链接网站网站优化seo培训
  • 东营做网站百度seo关键词优化软件
  • 上虞区住房和城乡建设局网站公众号seo排名
  • 徐州酷优网络seo营销怎么做
  • 包头手机网站制作市场营销一般在哪上班
  • 网站建设算无形资产吗百度推广app下载官方
  • 手机网站打开很慢seo综合查询站长工具关键词
  • wordpress 第一张图片 get first百度竞价优化排名
  • 个人帮忙做网站吗凤凰网台湾资讯
  • 个人域名怎么做社交网站怎么做网络营销
  • 成都网站建设公司盈利吗推推蛙网站诊断
  • 网站开发项目经验怎么写淘宝优化
  • 深圳网站定制深圳网站建设公司最新搜索关键词
  • 可以做单的猎头网站北京seo优化方案
  • 企业外贸网站建设电商具体是做什么的