halcon分离路径名称

Posted supercxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了halcon分离路径名称相关的知识,希望对你有一定的参考价值。

用haclon程序将目录名分离的算法。

ParseFileName:=‘F:/D705/4-20/缺陷/81.bmp‘

 parse_filename(ParseFileName, BaseName, Extension, Directory)

* This procedure gets a filename (with full path) as input
* and returns the directory path, the base filename and the extension
* in three different strings.
* 
* In the output path the path separators will be replaced
* by / in all cases.
* 
* The procedure shows the possibilities of regular expressions in HALCON.
* 
* Input parameters:
* FileName: The input filename
* 
* Output parameters:
* BaseName: The filename without directory description and file extension
* Extension: The file extension
* Directory: The directory path
* 
* Example:
* basename(C:/images/part_01.png,...) returns
* BaseName = part_01
* Extension = png
* Directory = C:\\images\\ (on Windows systems)
* 
* Explanation of the regular expressions:
* 
* ([^\\\\/]*?)(?:\\.[^.]*)?$:
* To start at the end, the $ matches the end of the string,
* so it is best to read the expression from right to left.
* The part in brackets (?:\\.[^.}*) denotes a non-capturing group.
* That means, that this part is matched, but not captured
* in contrast to the first bracketed group ([^\\\\/], see below.)
* \\.[^.]* matches a dot . followed by as many non-dots as possible.
* So (?:\\.[^.]*)? matches the file extension, if any.
* The ? at the end assures, that even if no extension exists,
* a correct match is returned.
* The first part in brackets ([^\\\\/]*?) is a capture group,
* which means, that if a match is found, only the part in
* brackets is returned as a result.
* Because both HDevelop strings and regular expressions need a \\
* to describe a backslash, inside regular expressions within HDevelop
* a backslash has to be written as \\\\.
* [^\\\\/] matches any character but a slash or backslash (\\ in HDevelop)
* [^\\\\/]*? matches a string od 0..n characters (except / or \\)
* where the ? after the * switches the greediness off,
* that means, that the shortest possible match is returned.
* This option is necessary to cut off the extension
* but only if (?:\\.[^.]*)? is able to match one.
* To summarize, the regular expression matches that part of
* the input string, that follows after the last / or \\ and
* cuts off the extension (if any) after the last ..
* 
* \\.([^.]*)$:
* This matches everything after the last . of the input string.
* Because ([^.]) is a capturing group,
* only the part after the dot is returned.
* 
* .*[\\\\/]:
* This matches the longest substring with a / or a \\ at the end.
* 
tuple_regexp_match (FileName, .*[\\\\/], DirectoryTmp)
tuple_substr (FileName, strlen(DirectoryTmp), strlen(FileName) - 1, Substring)
tuple_regexp_match (Substring, ([^\\\\/]*?)(?:\\.[^.]*)?$, BaseName)
tuple_regexp_match (Substring, \\.([^.]*)$, Extension)
* 
* 
* Finally all found backslashes (\\) are converted
* to a slash to get consistent paths
tuple_regexp_replace (DirectoryTmp, [\\\\,replace_all], /, Directory)
return ()

 

以上是关于halcon分离路径名称的主要内容,如果未能解决你的问题,请参考以下文章

Halcon自学笔记

不立即分离片段

为啥我不能从 FragmentPagerAdapter 分离片段?

Python - 模块

halcon 异步采集如何结束

Halcon算子翻译——exit