求用matlab 写一个连通区的代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求用matlab 写一个连通区的代码相关的知识,希望对你有一定的参考价值。
大家好,我现在需要自己写一个可以标明一副图片中的连通区域的代码,即一个matlab函数。
规定格式为
function[result_image,number]=Clabel(image)
其中image 是我们要提供的测试图片,result_img是用不同颜色标记好的连通图,number即连通区域的个数。
如果不能给出result_image,只要能写出怎么得到number 就好。
注意:不能使用bwlabel哦,要自己写函数,分析矩阵来。(四连通)
谢谢大家
如果不能给出准确代码,给伪代码也不错了,但是希望能尽量贴近matlab的语法格式。
求用c#语言写一个将十进制转换为二进制的程序
用堆栈
请确定可用
如果要用堆栈,那就比较麻烦,也没有必要
///
///
堆栈
///
private
stack
intstack
=
new
stack
(
5
);
public
void
dtob(
int
inum
)
intstack.push(
inum
%
2
);
//
余数入栈
int
d
=
inum
/
2;
if
(
d
!=
0
)
dtob(
d
);
//
求下一个二进制位
return;
//下面是调用程序
public
static
void
main()
intstack.clear();
dtob(
11
);
stringbuilder
s
=
new
stringbuilder();
while
(
intstack.count
!=
0
)
s.insert(
0,
intstack.pop()
);
//
从堆栈中取出所有的二进制位
messagebox.show(
"二进制数:"
+
s.tostring()
);
//要转换下面的方法更简单,而且效率更高
public
string
dtob1(
int
inum
)
int
len
=
sizeof(
int
)
*
8;
stringbuilder
s
=
new
stringbuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
inum;
for
(
int
i
=
0;
i
<
len;
i++
)
if
(
(
tmp
&
exmple
)
==
0
)
s.append(
"0"
);
else
s.append(
"1"
);
tmp
<<=
1;
return
s.tostring();
参考技术A ///
///
堆栈
///
private
Stack
Intstack
=
new
Stack
(
5
);
public
void
DtoB(
int
iNum
)
Intstack.Push(
iNum
%
2
);
//
余数入栈
int
d
=
iNum
/
2;
if
(
d
!=
0
)
DtoB(
d
);
//
求下一个二进制位
return;
//下面是调用程序
public
static
void
Main()
Intstack.Clear();
DtoB(
11
);
StringBuilder
s
=
new
StringBuilder();
while
(
Intstack.Count
!=
0
)
s.Insert(
0,
Intstack.Pop()
);
//
从堆栈中取出所有的二进制位
MessageBox.Show(
"二进制数:"
+
s.ToString()
);
//要转换下面的方法更简单,而且效率更高
public
string
DtoB1(
int
iNum
)
int
len
=
sizeof(
int
)
*
8;
StringBuilder
s
=
new
StringBuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
iNum;
for
(
int
i
=
0;
i
<
len;
i++
)
if
(
(
tmp
&
exmple
)
==
0
)
s.Append(
"0"
);
else
s.Append(
"1"
);
tmp
<<=
1;
return
s.ToString();
参考技术B /*@file TenToX.cs*/
/*功能:用堆栈实现10进制到2,8,16进制的数字转换*/
using System;
using System.Collections;
class TenToX
static void Main(string[] args)
int num, baseNum;
Console.Write("输入十进制数字: ");
num = Convert.ToInt32(Console.ReadLine());
Console.Write("选择进制类型[2/8/16]: ");
baseNum = Convert.ToInt32(Console.ReadLine());
Console.Write(num + "=>转换 ");
MulBase(num, baseNum);
Console.WriteLine(" 进制基数" + baseNum);
Console.Read();
//用堆栈转换实现N进制间转换
static void MulBase(int n, int b)
Stack Digits = new Stack();
do
Digits.Push(n % b);
n /= b;
while (n != 0);
while (Digits.Count > 0)
Console.Write(Digits.Pop());
//end class
功能多了一些,稍微删减就行本回答被提问者采纳 参考技术C /// <summary>
/// 堆栈
/// </summary>
private Stack<int> Intstack = new Stack<int>( 5 );
public void DtoB( int iNum )
Intstack.Push( iNum % 2 ); // 余数入栈
int d = iNum / 2;
if ( d != 0 )
DtoB( d ); // 求下一个二进制位
return;
//下面是调用程序
public static void Main()
Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
while ( Intstack.Count != 0 )
s.Insert( 0, Intstack.Pop() ); // 从堆栈中取出所有的二进制位
MessageBox.Show( "二进制数:" + s.ToString() );
//要转换下面的方法更简单,而且效率更高
public string DtoB1( int iNum )
int len = sizeof( int ) * 8;
StringBuilder s = new StringBuilder();
int exmple = 1 << len - 1;
int tmp = iNum;
for ( int i = 0; i < len; i++ )
if ( ( tmp & exmple ) == 0 )
s.Append( "0" );
else
s.Append( "1" );
tmp <<= 1;
return s.ToString();
参考技术D C行吗?
以上是关于求用matlab 写一个连通区的代码的主要内容,如果未能解决你的问题,请参考以下文章
求用动态规划的方法求解简单的整数规划问题的matlab程序或者C++程序代码,高手们帮帮忙
跪求用牛顿迭代法解三元三次非线性方程组,急!! 在线等。。。MATLAB求解要代码