MATLABfill函数_matlab中C的模块名称是什么

MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。

先展示一下imfill()函数的功能,如下图:
在这里插入图片描述
上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。

C/C++代码:

bool imFill(Ipp8u *img, int width, int height)
{
	vector<int> q;
	int head = 1;
	int tail = 1;
	int pix_x;
	int pix1_x;
	int pix, pix1;
	int nerghbour1[8] = { -1, -1, -1, 0, 0, 1, 1, 1 }; //行坐标偏移
	int nerghbour2[8] = { -1, 0, 1, -1, 1, -1, 0, 1 };  //列坐标偏移

	q.push_back(round(height / 2)*width + round(width / 2) - 1);

	tail = tail + 1;
	do
	{
		pix = q[head - 1];
		pix_x = pix % width;
		for (int i = 0; i < 8; i++)
		{
			pix1 = pix + nerghbour2[i] + nerghbour1[i] * width;
			pix1_x = pix1 % width;
			if (pix1 < height*width && pix1 > 0 && abs(pix1_x - pix_x) < 2)
			{
				if (img[pix1] == 0)
				{
					img[pix1] = 1;
					q.push_back(pix1);
					tail = tail + 1;
				}
			}
		}
		//q.erase(q.begin());
		head = head + 1;

	} while (head != tail);

	return true;
}

继续搬砖了,原理改天附上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194492.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dede添加会员功能听语音

    dede添加会员功能听语音

    2021年9月25日
    49
  • Ubuntu18安装Edge

    Ubuntu18安装Edge1、通过以具有sudo特权的用户身份运行以下命令来更新程序包索引并安装依赖项:sudoaptupdatesudoaptinstallsoftware-properties-commonapt-transport-httpswget2、使用以下命令导入MicrosoftGPG密钥wget:wget-qhttps://packages.microsoft.com/keys/microsoft.asc-O-|sudoapt-keyadd-3、并通过键入以下命令启用Ed

    2022年7月21日
    13
  • 【异常解决】Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/common

    【异常解决】Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/common本文目录一 背景描述二 报错信息三 解决方案 org springframew web util NestedServle Handlerdispa nestedexcept lang NoClassDefFo org apache commons httpclient HttpClientCa java lang ClassNotFoun org apac

    2025年12月13日
    4
  • 子串在父串中出现的次数PosCount

    子串在父串中出现的次数PosCount

    2021年8月7日
    60
  • Java volatile的性能分析「建议收藏」

    Java volatile的性能分析「建议收藏」volatile通过内存屏障来实现禁止重排序,通过Lock执行来实现线程可见性,如果我们的程序中需要让其他线程及时的对我们的更改可见可以使用volatile关键字来修饰,比如AQS中的state所以在一个线程写,多个线程读的情况下,或者是对volatile修饰的变量进行原子操作时,是可以实现共享变量的同步的,但是i++不行,因为i++又三个操作组成,先读出值,然后再对值进行+1,接着讲结果写入,这个过程,如果中间有其他线程对该变量进行了修改,那么这个值就无法得到正确的结果。今天我们讨论的重

    2022年7月18日
    18
  • 怎样初始化二维vector

    怎样初始化二维vector二维vector的初始化方法总结初始化一个二维vector,行M,列N学会用大括号初始化二维数组初始化一个二维vector,行M,列不固定初始化一个二维vector,行列都不固定leetcode相关例题以定义一个二维整形数组并初始化为例:初始化一个二维vector,行M,列N//初始化一个二维的matrix,行M,列N,且值为0vector<vector<int&g…

    2025年7月23日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号