zoukankan      html  css  js  c++  java
  • [转]图像获取与采集及图像格式与Region介绍——第2讲

    一、图像获取与采集

     

    1、本地图片读取

    ① 单张读取

    直接传入图片路径即可,可以用绝对路径,也可以用相对路径:

    read_image (Image, 'C:/Users/Administrator/Desktop/1.png')

     

    ② 编号连续的图片读取(000、001、002……)

    * 分别读取003.jpg、004.jpg、005.jpg、006.jpg

    for i := 3 to 6 by 1

      read_image (Image, 'C:/Users/Administrator/Desktop/pic/' + i$'.3' + '.jpg')

    endfor

     

    ③ 读取文件夹(及子文件夹)下全部图片

     

    list_files ('D:/photo', ['files','follow_links'], ImageFiles)

    tuple_regexp_select (ImageFiles, ['\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles)

    for Index := 0 to |ImageFiles| - 1 by 1

      read_image (Image, ImageFiles[Index])

         * Image Acquisition 01: Do something

    endfor

     

     算子list_files中可以有多个参数,例如:

    'directories':读取文件夹

    'recursive':递归,读取子文件夹里面的文件

    'max_depth 3':支持3级文件目录深度的文件检索

    'max_files 1000':最大文件数目不超过1000个

    ……

     

     

    2、相机采集图像(以笔记本摄像头为例)

    执行“助手”——“打开新的Image Acquisition”

     

    如果没连其他的相机,那么点击“自动检测接口”则会检测出“DirectShow”,此时点击“实时”图标就可以用笔记本摄像头实时采集图像了:

    然后点“插入代码”就可以看到采集图像的Halcon代码了:

     

     

    二、常见图像格式介绍 

    jpg——(有损压缩)

    png——(无损压缩)

    bmp——(无损、通常不压缩)

    其他还有gif、tiff、ico等格式的图片,但是一般视觉项目中只会用到jpg、png、bmp这三种格式。一般相机采图输出的就是bmp格式的图片,这种图片的主要缺点是文件太大,占磁盘。png图片是无损压缩图片,具有和bmp相同的保真度,png和bmp可以互相无损转换,同一张图,png格式只有bmp格式体积的1/3或者更少,jpg通常体积更小,但是由于有画质损失,一般很少使用。

     

    总之,不同格式的图片在文件大小以及保真度上有明显差异。

     

    bmp格式图片文件大小的计算:

    以这张500W黑白相机(2448 * 2048)拍摄的图片为例。黑白相机是8位黑白图像,一个像素占据1 Byte的空间

    2048 * 2448 /1024 = 4896 KB,可以看出跟上图中的4898KB是即为接近的,其差异忽略不计,因此一般这么算就行。

    如果是彩色相机,一般输出24位图像,图像大小扩大为3倍。

    或者记住一句口诀:500万相机输出的黑白图像一般是5MB,1000万相机输出的黑白图像一般是10MB;如果是彩色图像,则大小乘以3。

     

    三、Region介绍

    1、简介

    Region可以理解为符合某些性质像素的集合,Region的形状可以是任意的,例如圆、椭圆、矩形、或者其他不规则图形,甚至单独的一个点都可以成为一个Region。

    2、最常见相关算子

    获取Region的面积和中心点坐标:

    area_center(Regions : : : Area, Row, Column)

    根据特征筛选Region,这些特征可以是面积、宽、高、最小内接圆、圆度、矩形度等参数:

    select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : ) 

    通常用于在一堆Region中选择面积最大的那个:

    select_shape_std(Regions : SelectedRegions : Shape, Percent : )

     3、Region的联合操作

     

    上面四种算子操作分别是:并集、交集、差集、补集

     

    4、Region转换操作

    shape_trans(Region : RegionTrans : Type : )

     

     

    5、其他常见region算子(帮助文档检索“region”获得更多相关算子信息)

    draw_region

    move_region

    paint_region

    read_region

    write_region

    region_features

    sort_region

    zoom_region

    ……

     


    ---------------------
    作者:xh6300
    来源:CNBLOGS
    原文:https://www.cnblogs.com/xh6300/p/10623901.html
    版权声明:本文为作者原创文章,转载请附上博文链接!

  • 相关阅读:
    【转载】loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题
    实现LoadRunner多个场景的顺序执行(命令行)
    BAT批处理(一)
    BAT批处理(二)
    BAT批处理(五)
    BAT批处理(六)
    BAT批处理(三)
    BAT批处理(四)
    DOS工具
    python3.0与2.x之间的区别
  • 原文地址:https://www.cnblogs.com/dinghw/p/12678246.html
Copyright © 2011-2022 走看看