当前位置:文档之家› sqlserver2005分割字符串,循环输出示例

sqlserver2005分割字符串,循环输出示例

sqlserver2005分割字符串,循环输出示例
sqlserver2005分割字符串,循环输出示例

create function f_splitstr(@source varchar(500),@split

varchar(5))

returns @temp table(tid varchar(50))

as

begin

declare @ch as varchar(50)

set @source=@source+@split

while(@source<>'')

begin

set @ch=left(@source,charindex(',',@source,1)-1)

insert @temp values(@ch)

set @source=stuff(@source,1,charindex(',',@source,1),'')

end

return

end

--select tid from dbo.f_splitstr('xxxxxxx,ttttt,yyyyyy,ererer',',') --select getdate()

declare

@i int,@countNum int,

@para varchar(50)

declare tid_cursor CURSOR for select tid from

dbo.f_splitstr('xxxxxxx,ttttt,yyyyyy,ererer',',')

open tid_cursor

FETCH NEXT FROM tid_cursor into @para

WHILE@@FETCH_STATUS= 0

BEGIN

print @para

FETCH NEXT FROM tid_cursor into @para

END;

CLOSE tid_cursor

DEALLOCATE tid_cursor

GO

(完整word版)字符分割

在车牌自动识别系统中最重要的指标是字符的识别率,对字符识别的准确率直接影响了系统的性能。字符识别部分由车牌图像的二值化、滤波、字符分割、字符大小规一化、汉字、字母和数字识别等模块组成。这一周我主要学习了字符分割模块的有关内容。 车牌字符分割的任务就是把多行或多字符图像中的每个字符从整个图像中分割出来,使其成为单个字符图像,为下一步将标准的单个字符输入到字符识别模块做准备。字符分割是字符识别的基础,字符分割的质量直接影响到字符识别的效果。字符分割之前,首先要进行图像的二值化,然后再进行字符分割,从而分割出一个个具体的二值图表示的字符图像点阵,作为单字识别的输入数据。由于文本图像不但包括了组成文本的一个个字符,而且包含了字符行间距与字符间的空白,甚至还会带有各种标点符号,这就需要采用一定的处理技术将文本中的一个个字符切分出来,形成单个字符的点阵,以便进行字符识别。车牌字符分割的原理主要是利用车牌字符自身的一些特点如规则整齐的排列、字符之间有一定的间隔、字符的宽高比例固定等等,对车牌区域进行垂直方向的投影,利用字与字之间的空白间隙在图像行垂直投影上形成的空白间隙将单个汉字的图像切割开来。 4.2投影分割 投影分割方法的原理是首先将车牌图像转换为二值图像(设白色为1,黑色为0),然后将车牌像素灰度值按垂直方向累加,即所谓的垂直投影。由于车牌中字符之间的灰度值通常为O,因此,投影图将会在字符之间形成谷底,或者说在字符处形成波峰(一种特殊的波峰)。通过寻找两个波峰之间的谷点,将其作为字符分割的位置,完成字符的分割。投影分割法的具体步骤如下: (1)先自下而上对图像进逐行扫描直至遇到第一个白色象素点。记录下来,然后再由上而下对图像进行逐行扫描直到找到第一个白色象素点,这样,就找到图像大致的高度范围。(2)在这个高度范围之内再自左向右逐行扫描,遇到第一个白色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到没有白色象素的列,则认为是这个字符分割结束。然后继续按照上述的方法扫描,直至图像的最右端,就得到每个字符比较精确的宽度范围。(3)在已知的每个字符比较精确的宽度范围内,按照(1)的方法,分别进行自上而下和自下而上的逐行扫描来获得每个字符精确的高度范围。投影分割的方法比较常用,主要是针对在车牌定位、图像预处理后比较规则的车牌图像。它的优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。缺点是由于车牌图像通常会有噪声,产生字符的断裂和交叠等情况,在投影时字符之间的谷底会受到很大影响,造成谷底不明显,严重时谷底会消失,造成字符分割误差甚至错误,最终影响字符的识别。因此该方法对车牌字符的断裂和交叠问题,解决得不很理想。 4.3基于聚类分析的字符分割 基于聚类分析的字符分割原理是按照属于同一个字符的像素构成一个连通域的原则,再结合牌照字符的高度、间距的固定比例关系等先验知识,来分割车牌图像中的字符。其具体算法步骤为: (1) 以等于车牌图像宽度七分之一的阈值‘对车牌图像按行进行逐行扫描,如果有线段的长度大于‘就可以认为是牌照的上下边框,再以等于车牌图像高度五分之三的阈值Z:对车牌图像按列进行逐列扫描,如果有线段的长度大于厶,则认为是车牌的左右边框。因此可除去车牌边框部分。 (2)根据车牌字符的先验知识,在预处理好的车牌图像上预设7个类中心。设置类中心可以采用程序提示给定坐标值的方法,也可以采用给予固定坐标值的方法。 (3)自下向上对图像进行逐行扫描,每扫描到一个白色象素时,都要与上述每个类已获得的每个(白色)象素比较距离d,找到与该象素距离最近的已获得象素点,并认为这两个象素属于同一类,即属于同一字符。距离d取两个象素点:彳(x,Y)扫描得到的当前象素,曰O,),)

Java分割字符串

https://www.doczj.com/doc/291990304.html,ng.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } // 最多分割出3个字符串 int maxSplit = 3; sourceStrArray = sourceStr.split(",", maxSplit); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } } } 输出结果: 1 2 3 4 5 1 2 3,4,5

split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例: public class StringSplit { public static void main(String[] args) { String value = "192.168.128.33"; // 注意要加\\,要不出不来,yeah String[] names = value.split("\\."); for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } } split分隔符总结 1.字符"|","*","+"都得加上转义字符,前面加上"\\"。 2.而如果是"\",那么就得写成"\\\\"。 3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。 比如:String str = "Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。 java.util.Tokenizer JDK 1.0 or later StringTokenizer StringTokenizer 类允许应用程序将字符串分解为标记。StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String 的 split 方法或 java.util.regex 包。 代码示例 public class StringSplit { public static void main(String[] args) { String ip = "192.168.128.33"; StringTokenizer token=new StringTokenizer(ip,"."); while(token.hasMoreElements()){

车牌识别(字符切割)大作业

图像处理技术

目录一.引言 (1) 二.目的和意义 (1) 三.设计原理 (1) 四.字符分割程序 (2) 五.结果 (4) 六.测试代码 (5) 七.系统的不足 (5) 八.总结 (5) 九.心得体会 (5) 十.致谢 (6) 十一.参考文献 (6)

一.引言 随着人们生活水平的不断提高,机动车辆数量大幅度增加,与之相配套的高速公路,城市路网及停车场越来越多,显著提高了人们对交通控制方面的要求。由于计算机技术的发展,信息处理水平的提高使智能交通系统成为世界交通领域研究的重要课题。其中车牌识别是智能交通系统的重要组成部分。车牌识别系统能够自动、实时地检测车辆、识别汽车车牌,从而监控车辆的收费、闯关、欠费以及各种舞弊现象。本系统为基于蓝色车牌的车牌识别系统,它能够识别非蓝色车辆的蓝底白字车牌。该系统通过车牌提取、车牌定位、预处理、字符分割、字符识别五个模块组成车牌识别系统。 二.目的和意义 通过对车牌识别系统的研究,自己开发小型车牌识别系统,虽有一定的局限性与不完整性,但可以使自己更加的熟悉MATLAB语言,激发对研究的兴趣,拓宽知识面,为自己以后的研究打下基础。在提升自身科研能力的同时,还能提高团队合作精神,清楚团队成员的分工,协调成员间的工作,为今后的团队合作研究积累经验。 三.设计原理 字符分割在此系统中有着承前启后的作用。它在前期车牌定位的基础上进行字符的分割,然后利用分割的结果进行字符的识别。字符识别的算法很多,应为车牌字符间间隔较大,不会出现字符粘连的情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为组成该块有两个字符,需要分割。一般分割出来的字符要进行进

SQL 分割字符串函数 SQL SPLIT

SQL 分割字符串函数 SQL SPLIT 2009-06-10 00:15 我们在操作数据库时,经常要用到分割字符串以达到某种目的,下面是一个SQL分割字符串的函数: --CODE: -- ============================================= -- Author: -- Create date: <2009-06-09> -- Description: -- ============================================= CREATE FUNCTION [dbo].[fn_split]

( --输入字符串 @InputString NVARCHAR(MAX), --分隔符号 @Seprator NVARCHAR(10) ) RETURNS @tempTable TABLE ([value] NVARCHAR(200)) AS BEGIN DECLARE @index int DECLARE @value NVARCHAR(200) --去除输入字符串前后的空格 SET @InputString = RTRIM(LTRIM(@InputString)) --分隔符号@Seprator在输入字符串@InputString中的开始位置 SET @index=CHARINDEX(@Seprator, @InputString) WHILE @index>0 BEGIN --返回输入字符串(@InputString)左边开始指定个数(@index-1)的字符 SET @value=LEFT(@InputString,@index-1) --插入数据 INSERT @tempTable VALUES(@value) --重新设置输入字符串截取输入字符串从输入字符串@index+1处开始且长度为LEN(@InputString)-@index SET @InputString = SUBSTRING(@InputString, @index+1, LEN(@InputString)-@index) --分隔符号@Seprator在输入字符串@InputString中的开始位置 SET @index=CHARINDEX(@Seprator, @InputString) END --如果输入字符串不为空 IF(@InputString<>'\') BEGIN INSERT @tempTable VALUES(@InputString) END RETURN END --使用 SELECT * FROM dbo.fn_split('A,B,CD,EFG,H',',') --结果

字符串分割函数

[C语言]字符串处理 - 以指定的字符串分割字符串(支持中文字符) 2008-11-8: 函数StringSplit(分割字符串到一个字符串数组中,其中该数组第0位为分割后字符串的个数) 2008-11-10: 函数StringSplit_Struct(以定义一个新结构的方式来实现该函数) /*C代码如下*/ #include /*实现方案1*/ /*分割字符串到一个字符串数组中,其中该数组第一位为分割后的个数*/ char** StringSplit(const char* string,const char* split) { char** result; /*首先分配一个char*的内存,然后再动态分配剩下的内存*/ result = (char * * )malloc(sizeof(char *)*1); memset(result,0,sizeof(char *)*1); /*定义一个遍历用的指针和一个寻找位置用的指针*/ char* p = string; char* pos = string; /*无论是否存在该分割串,绝对都会分割到一个字符串*/ int count = 1; while(*p != '\0') { char* temp; char* tt; /*查找该字符串*/ pos = strstr(p,split); /*结果为0说明剩下的字符串中没有该字符了*/ if(pos == 0) { result = (char * * )realloc(result,sizeof(char *)*(count+2)); result[0] = count; result[count] = p; result[count+1] = NULL; return result; } /*分配临时字符串空间*/ temp = (char * )malloc(sizeof(char)*(pos - p+1)); memset(temp,0,sizeof(char)*(pos - p+1)); /*设置头指针,以便赋值时使用*/ tt = temp; while(p<=pos) {

基于matlab的车牌字符分割

《多媒体通信技术》课程报告 专业通信与信息系统 学号 姓名 任课教师

基于matlab的车牌字符分割 摘要:本文利用投影分割的方法对车牌字符进行分割,并利用模板匹配的方法进行字符识别,在图像进行预处理后的基础上,利用对车牌图像分块扫描的方法对车牌图像去边框处理,在去边框的基础上对每个字符进行分割,得到单个字符。关键字:字符;预处理;分割 1、引言 智能交通系统(intelligent transportation system,ITS)的发展现今对社会生活、国民经济和城市建设产生积极而深远的影响,我国已经将其列为优先发展的高技术产业化重点领域[1]。车牌识别系统(1icense plate recognition,IJR)是目前交通部门十分重要的科研课题之一,它主要包括车牌定位、字符分割和字符识别三部分,字符分割和字符识别是最后的关键环节。本文主要通过运用投影分割的方法对车牌进行字符分割并利用模板匹配的方法对车牌字符进行识别。2、图像预处理 图像预处理是对输入的图像进行一系列变换处理,使之成为符合字符识别模块要求的图像。图像预处理环节对于最终识别的正确率有很大影响,由于图像本身受到各种自然因素或设备因素的影响,图像的清晰度往往不是很理想,有时还会带有较明显的图像噪声。若不对图像进行预处理,这些噪声将给后续的识别模块带来严重影响,最终可能造成识别错误。因此,预处理的好坏一定程度上影响到字符识别的正确率。图像预处理首先需要将待识别的字符从输入的灰度图中分离出来。最常用的方法就是图像二值化。 2.1图像的灰度化

就是将彩色图像转化为具有256个灰度级的黑白图像,灰度图像只保留图像的亮度信息,去除了色彩信息,就像我们平时看到的黑白照片,它的亮度由暗到明,而且亮度变化是连续的。图像灰度化后可以使处理运算量大大减少,这样处理过程就变得更加简单和省时。在灰度图像中,通常将亮度划分成0到255共256个级别,0最暗,255最亮。 图2-1 灰度化的图像 2.2 图像的阈值化处理 所谓图像二值化就是指将灰度图转化为只含有两种灰度值的图像,一种为背景,另一种为待识别的字符,本文采用动态阈值法将图像二值化:如果输入图像较暗或者车牌较脏,如果采用固定的阈值将图像进行二值化,生成的二值图会非常黑或者有很多噪声。二值化有很多方法,主要为P片法或者峰谷法。本文采用的是P片法,阈值的大小的设定基于以下假设:由于现有车牌绝大部分为蓝底白字或者黄底黑字车牌,设理想的车牌平均包含大约60%的蓝/黄色像素和40%的白/黑色像素。首先,将图像二值化,计算出黑色和白色像素的比例,将它和期望值进行比较。从而算出新的阈值,直到近似等于期望值为止[2]。图1为理想状态下车牌原图片和的阈值化图片。 图2-2-1 阈值化的图像 图像经过上述步骤处理后,已经从带有噪声的灰度图像转变为符合识别要求的图像。该图像为只包含两种灰度值的二值图像,并且具有统一尺寸。而且在预处理环节中,已最大限度地去除了输入图像中的噪声,在保持字符原本信息不丢失的前提下,把待识别的字符从背景中成功地分离出来。 3 车牌的去边框处理

语音识别字符分割算法_原创

5.设计方法 5.1概述 5.2硬件系统的设计 语音信号预处理 (1)预加重 预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。在计算机里用具有6dB/频程升高频特性的预加重数字滤波器来实现,一般是一阶的FIR数字滤波器: 为预加重系数,值接近于l,在0.9和1之间,典型值为0.94。 预加重的DSPBuilder实现: 为了便于实现,将上式中的一阶FIR预加重滤波器用差分方程表示为: 其中,为原始语音信号序列,N为语音长度,上面的公式显示其在时域 上的特性。又因为0.94接近于15/16,所以将上面的式子变为 除以16可以用右移4位来实现,这样就将除法运算化简为移位运算,降低了计算复杂度。在后面的模块设计中,也乘以或者除以一些这样的数,这些数为2的幂次,都可以用移位来实现。 预加重的硬件实现框图如下: 预加重实现框图 DSP Builder中的图形建模为:

预加重滤波器的DSPBuilder结构图 (2)分帧 语音信号是一种典型的非平稳信号,其特性随时间变化,其在很短的时间内是平稳的,大概为1小20ms,其频谱特性和物理特征可近似的看做不变,这样就可以采用平稳过程的分析处理方法来处理。 分帧的DSP Builder实现: 语音信号在10到20ms之间短时平稳(这样可以保证每帧内包含1一7个基音周期),也就是说选取的帧长必须介于10到20ms之间,此外,在MFCC特征提取时要进行FFT变换,FFT点数一般为2的幂次,所以本文中选择一帧长度为16ms,帧移为1/2帧长,这样一帧就包含了16KHz*16ms=256个点,既满足短时平稳,又满足FFT变换的要求。 由于采集的语音是静态的,语音长度已知,很容易计算出语音的帧数,但是在硬件上或实时系统中,语音长度是无法估计的,而且还要考虑存储空间的大小和处理速度,采用软件实现时的静态分帧方法是行不通的,可以利用硬件本身的特点进行实时的动态分帧。 为了使帧与帧之间平滑过渡,保持连续语音流的自相关性和过渡性,采用交叠分帧的算法。帧移取1/2帧长,即128个数据点当作一个数据块。FIFO1大小为一帧语音长度,分成两个数据块,预加重后的数据写入这个FIFO。为了实现帧移交叠,在FIFO1读数据时,同时再用FIFO2保存起来,当FIFO的一块数据读完以后,紧接着从FIF22读出这一块的副本。写入的一块数据,相当于被重复读出2次,所以FIFO1的读时钟频率设计为写时钟频率的2倍,而FIFOZ的读写时钟频率和FIFO1的读时钟频率相同。分帧以后的数据在图中按时间标号为1、2、2、3.··…,1、2为第一帧,2、3为第二帧,以此类推。

投影法分割字符 网上找到的

%计算车牌水平投影,并对水平投影进行峰谷分析 histcoll=sum(sbw2); histrow=sum(sbw2'); figure;subplot(2,1,1);bar(histcoll);title('垂直投影(含边框)'); subplot(2,1,2),bar(histrow);title('水平投影(含边框)'); figure;subplot(2,1,1);bar(histrow);title('水平投影(含边框)'); subplot(2,1,2);imshow(sbw2);title('车牌二值子图'); %对水平投影进行投影分析 meanrow=mean(histrow); minrow=min(histrow); levelrow=(meanrow+minrow)/2; count1=0; l=1 for k=1:hight if histrow(k)<=levelrow count1=count1+1; else if countl>=l markrow(l)=k; %上升点 markrow1(l)=countl; %谷宽度(下降点至下一个上升点)l=l+1; end count1=0; end end markrow2=diff(markrow); %峰距离(上升点至下一个上升点) [ml,nl]=size(markrow2); nl=nl+1; markrow(l)=hight; markrow(l)=count1; markrow2(nl)=markrow(l)-markrow(l-1); l=0; for k=1:nl markrow3(k)=markrow(k+1)-markrow1(k+1); %下降点 markrow4(k)=markrow3(k)-markrow(k); %峰宽度(上升点至下降点)markrow5(k)=markrow3(k)-double(unit16(markrow4(k)/2)); %峰中心位置end %去水平(上下)边框,获取字符高度 maxhight=max(markrow2); findc=find(markrow2==maxhight); rowtop=markrow(findc); rowbot=markrow(findc+1)-markrow1(findc+1); sbw2=sbw(rowtop:rowbot,:); %子图为(rowbot-rowtop+1)行 maxhight=rowbot-towtop+1; %字符高度(rowbot-rowtop+1)

车牌字符分割算法研究

1 绪论 1.1 背景介绍 为了实现车牌字符识别,通常要经过车牌位置检测、车牌字符分割和字符识别三个关键步骤。车牌位置检测是根据车牌字符目标区域的特点,寻找出最符合车牌特征的区域。车牌字符分割就是在车牌图像中找出所有字符的上下左右边界,进而分割出每个车牌字符。在实际应用中,车牌字符分割的效果对车牌字符识别正确率会产生很大的影响,由于车牌图像亮度不均、尺度变化、透视失真、字符不完整等因素,使图像质量存在较大差异,进而影响图像分割的效果,因此车牌字符分割这一技术仍然具有很大的研究意义。在实际的监控场景中,车牌图像的透视失真通常是由于拍摄视角的变化或车辆位置的移动,相机光轴偏离车牌平面的法线方向造成的。由于车牌图像在整幅图像中占有较小的比例,所以车牌图像几何校正主要工作是校正车牌图像的旋转和剪切失真。 旋转投影法和直线拟合法是两种主要的偏斜校正方法。旋转投影法是为了获取垂直倾斜角,即将车牌图像穷举逐个角度进行剪切变换,然后统计垂直投影数值为0的点数,得到最大值对应的角度。这种方法受背景区域的干扰比较大。另一种方法是直线拟合车牌字符的左边界点从而获得垂直倾斜角,该方法为直线拟合法。该方法并没有逐个角度对车牌图像进行剪切变换,从左边界点拟合出的直线通常不能真正用来代表车牌的垂直倾斜方向,检测出的角度存在较大误差,且字符左侧噪声对角度检测干扰太大,鲁棒性较差。因此找到一种更准确和迅速的车牌垂直倾斜矫正方法是十分重要的。 通过得到最小的字符投影点坐标方差,得到另一种车牌垂直矫正方法。首先将车牌字符图像进行水平校正,根据字符的区域的上下边界,将车牌字符进行粗分割。然后将剪切变换后的字符点进行垂直偷用。当得到投影点最想左边方差时,便能导出两类剪切角闭合表达是,最后便是确定垂直投影的倾斜角并对此进行校正。 投影法是目前最常用的车牌分割算法之一,其算法简单并且计算复杂度低。该方法的核心思想是将车牌图像进行水平投影和垂直投影,利用峰谷特征来定位车牌字符的上下左右边界。但是车牌的噪声、边框等因素容易影响到投影的峰谷

Java中用split函数进行分割字符串

Java中用split函数进行分割字符串。2011-05-23 21:36:42| 分类:学习|举报|字号订阅 1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr是被分割的字符串,maxSplit是最大的分割数返回值说明:split函数的返回值是一个字符串数组String[] 2.示例代码 package wang48.jiaocheng; public class StringSplit { public static void main(String[]args) { String sourceStr="1,2,3,4,5"; String[] sourceStrArray=sourceStr.split(","); for(int i=0;i

5 1 2 3,4,5 --------------------------------------------------------------------------------------------------------------------------- 听说这个split方法比那个StringTokenizer效率高一点,今天刚好用上,就拿来试试,没有想到一试就出问题了,把折分结果打在控制台上,结果居然是空的,我要折分的字符串是“5#1|7#2|11#3”刚用这里str.split("|")时就出问题了,看了下面这篇文章,将其改为str.split("\\|")就OK了,这个|在正则表达式中也是个特殊字符。回头还得弄弄正则表达式了。 public static void main(string[] args) { string value = "192.168.128.33"; string[] names = value.split("."); for (int i = 0; i < names.length; i++) { system.out.println(names[i]); } } 运行结果: 对,没看错!没有任何输出! 让我们来看看split 方法的方法签名吧: public string[] split(string regex) 这里的参数的名称是regex ,也就是regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式 ,看了split 方法的实现代码就更坚定了我们的信心: public string[] split(string regex, int limit) { return https://www.doczj.com/doc/291990304.html,pile(regex).split(this, limit); } split 的实现直接调用的matcher 类的split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。 public static void main(string[] args) { string value = "192.168.128.33"; //注意要加\\,要不出不来,yeah

字符分割识别

先说明,这是一个最简单的车牌字符分割程序,结果连我自己都觉得惨不忍睹···太打击了。 正如前文提到的,传统LPR通常要求在识别任务前先做一个字符分割。应该算是整个LPR程序中最简单的一步了。只是,就连这么简单的步骤也需要我们的很多考虑,需要牺牲大量的脑细胞来得到个还算说得过去的办法。你看完就知道了。 程序大概分为3步:1、灰度化/二值化/直方图均衡化/归一化大小; 2、去噪;3、分割。 由于使用MATLAB作为平台,第一步几乎可以以一句话完成。这里不做过多陈述: bgs_img = filter2(fspecial('average',2),im2bw(histeq(rgb2gray(ori_img)),0.8)); 而对于去噪一步,需要花一点心思。不要以为去噪就是传统的高斯、中值滤波之类的东西,在自然环境中,干扰是无穷无尽的。对于我们的车牌识别程序,干扰我们的通常会有光照、车牌上的污点等等,这些干扰通常会使用普通图像处理手段来解决,比如用高斯等平滑滤波,用直方图均衡化等。然而,还有另外一些干扰也要引起我们的注意,就是车牌的边沿、螺丝等等,这些是几乎每个车都有的问题,因此解决这种问题更显得程序的通用性。 网上摘录的车牌 给出一个网上摘录下来的车牌(好牌号呀!),我们可以看到,尽管车牌已经比较完美地定位(切割)了出来,但是对于提取纯字符任务来说,我们还面临着边沿、螺丝、空隙等挑战。 在这里尝试采用比较常见的统计手段来解决这个问题: 在得到二值化图像之后,我们可以得到一个二值矩阵(这不废话),当某位置的值等于0的时候,表示该像素点为全黑,反之,则该像素点为纯白。然后我们可以对此二值矩阵分别对行、列 进行求和统计。 下一页是代码摘要和详解 ? ?About ?Tools o Tools for PASCAL VOC ?My Gallery

C++字符串分割方法总结

经常碰到字符串分割的问题,这里总结下,也方便我以后使用。 一、用strtok函数进行字符串分割 原型:char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。示例: 1//借助strtok实现split 2 #include 3 #include 4 5int main() 6 { 7char s[] = "Golden Global View,disk * desk"; 8const char *d = " ,*"; 9char *p; 10 p = strtok(s,d); 11while(p) 12 { 13 printf("%s\n",p); 14 p=strtok(NULL,d); 15 } 16 17return0; 18 } 运行效果: 二、用STL进行字符串的分割 涉及到string类的两个函数find和substr: 1、find函数 原型:size_t find ( const string& str, size_t pos = 0 ) const; 功能:查找子字符串第一次出现的位置。

参数说明:str为子字符串,pos为初始查找位置。 返回值:找到的话返回第一次出现的位置,否则返回string::npos 2、substr函数 原型:string substr ( size_t pos = 0, size_t n = npos ) const; 功能:获得子字符串。 参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos) 返回值:子字符串 实现如下: 1//字符串分割函数 2 std::vector split(std::string str,std::string pattern) 3 { 4 std::string::size_type pos; 5 std::vector result; 6 str+=pattern;//扩展字符串以方便操作 7int size=str.size(); 8 9for(int i=0; i 7 #include 8 #include 9

SQL语句做字符串分割

SQL语句做字符串分割 在平时的工作中经常碰到字符串分割的业务,如“广东,广西,海南,贵州,云南”按照逗号进行分割: [sql] --用正则表达式 with t as (select '广东,广西,海南,贵州,云南' str from dual) SELECT REGEXP_SUBSTR(str,'[^,]+',1,ROWNUM) province FROM t CONNECT BY ROWNUM<=LENGTH(str)-LENGTH(REPLACE(str,','))+1; --不使用正则 with t as (select '广东,广西,海南,贵州,云南' str from dual) SELECT substr(str,instr(','||str, ',', 1, rownum) , instr(str||',', ',', 1, rownum) - instr(','||str, ',', 1, rownum)) province FROM t CONNECT BY ROWNUM<=length(str)-length(replace(str,',',''))+1; [sql] PROVINCE ---------------------------- 广东 广西 海南 贵州 云南 如果要解决这个问题,需要对oracle的几个基本函数熟悉: substr( string, start_position, [ length ] ),取得字符串中指定起始位置和长度的字符串 string 必需。规定要返回其中一部分的字符串。 start 必需。规定在字符串的何处开始。正数 - 在字符串的指定位置开始负数 -

分割字符串

// 分割字符串,得到字符串数组(CString* ) CString * CSingleLevelingDlg::SplitString(CString str, char split, int& iSubStrs) { int iPos = 0; //分割符位置 int iNums = 0; //分割符的总数 CString strTemp = str; CString strRight; //先计算子字符串的数量 while (iPos != -1) { iPos = strTemp.Find(split); if (iPos == -1) { break; } strRight = strTemp.Mid(iPos + 1, str.GetLength()); strTemp = strRight; iNums++; } if (iNums == 0) //没有找到分割符 { //子字符串数就是字符串本身 iSubStrs = 1; return NULL; } //子字符串数组 iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1 CString* pStrSplit; pStrSplit = new CString[iSubStrs]; strTemp = str; CString strLeft; for (int i = 0; i < iNums; i++) { iPos = strTemp.Find(split); //左子串 strLeft = strTemp.Left(iPos); //右子串 strRight = strTemp.Mid(iPos + 1, strTemp.GetLength()); strTemp = strRight; pStrSplit[i] = strLeft; } pStrSplit[iNums] = strTemp; return pStrSplit; }

分割函数用法

返回位于 String 对象中指定位置的子字符串。 strVariable.substring(start, end) "String Literal".substring(start, end) 参数 start 指明子字符串的起始位置,该索引从 0 开始起算。 end 指明子字符串的结束位置,该索引从 0 开始起算。 说明 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。 substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。 如果 start 或 end 为 NaN 或者负数,那么将其替换为0。 子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。 示例 下面的示例演示了 substring 方法的用法。 function SubstringDemo(){ var ss; // 声明变量。 var s = "The rain in Spain falls mainly in the plain.."; ss = s.substring(12, 17); // 取子字符串。 return(ss); // 返回子字符串。 }

返回一个从指定位置开始的指定长度的子字符串。 stringvar.substr(start [, length ]) 参数 stringvar 必选项。要提取子字符串的字符串文字或String 对象。 start 必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为0。 length 可选项。在返回的子字符串中应包括的字符个数。 说明 如果length 为0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到stringvar 的最后。 示例 下面的示例演示了substr 方法的用法。 function SubstrDemo(){ var s, ss; // 声明变量。 var s = "The rain in Spain falls mainly in the plain."; ss = s.substr(12, 5); // 获取子字符串。 return(ss); // 返回"Spain"。 }

SQL 根据字符分割字符串的三种写法

go --创建函数(第一版) create function [dbo].[m_split](@c varchar(2000),@split varchar(2)) returns @t table(col varchar(200)) as begin while(charindex(@split,@c)<>0) begin insert @t(col)values(substring(@c,1,charindex(@split,@c)-1)) set @c =stuff(@c,1,charindex(@split,@c),'') end insert @t(col)values(@c) return end --下面两种是在论坛看到高手们发的 go --创建函数(第二版)(fredrickhu(小F)) create function [dbo].[f_split](@s varchar(8000), @split varchar(10) ) returns table as return (select substring(@s,number,charindex(@split,@s+@split,number)-numbe r)as col from master..spt_values where type='p'and number<=len(@s+'a') and charindex(@split,@split+@s,number)=number) go --创建函数(第三版)(dawugui(爱新觉罗.毓华)) create function [dbo].[d_split] (@inputstr varchar(8000),@seprator va rchar(10)) returns @temp table(a varchar(200)) as begin declare @i int set @inputstr =rtrim(ltrim(@inputstr))

常见几种字符串操作

1、取字符串长度 取字符串长度 1string str="Relict"; 2int Len=str.Length;//得到字符串str的长度 复制代码 2、字符串转为比特码 字符串转为比特码 1byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 2//然后可以得到比特长度 3 len = bytStr.Length; 复制代码 3、字符串相加 字符串相加 1 Systrm.Text.StringBuilder sd = new Systrm.Text.StringBuilder(); 2 sb.Append("Relict"); 3 sb.Append(""); 4//推荐使用上例,虽然和"+"等效,但性能更好一些 5string str = "Relict" + ""; 复制代码 4、截取字符串的一部分 语法:str.Substring(起始位置,截取字符串位数) 例如:截取str="Relict";的前两位结果为"Re" 1 str.Substring(0,2); 5、检查指定位置是否为空字符(正确性未知) 语法:char.IsWhiteSpce(字符串,第几位);//位数从第0位开始 例如:检查str="Relict "的第六位是否是空字符 1 Response.Write(char.IsWhiteSpce(str,6)); 结果为True,第一个字符是0位,6就是第七个字符,正好是一个空格。 6、检查字符是否为标点符号 语法:char.IsPunctuation('字符'); 例如:检查'R'是否是标点符号 1 Response.Write(char.IsPunctuation('R')); 结果为False 7、把字符转化为数字,查代码点。 语法:(int)'字符'; 1 Response.Write((int)'中');

相关主题
文本预览
相关文档 最新文档