region_to_bin — Convert a region into a binary byte-image. 这个算子是将图像的一个区域转换为二值图, region_to_bin(Region : BinImage : ForegroundGray, BackgroundGray, Width, Height : ) 输入区域,输出区域,前景的像素值,背景的像素值,图片的宽度,图片的高度 该算子的主要目的是去除所有外围干扰区域,将其填充为像素0,其他区域填充为255. read_image (Image, 'C:/Users/934554314/Desktop/TB/c2fdfc039245d688c56332adacc27d1ed21b2451.jpg') rgb1_to_gray (Image, GrayImage) get_image_size (GrayImage, Width, Height) threshold (GrayImage, Region, 0, 50) region_to_bin (Region, BinImage, 255, 0, Width, Height) 用opencv实现halcon上述算子相同功能: int main(int argc, char *argv[]) 由对比可知,由halcon处理所得图片和用opencv处理的照片得到的结果是一样的。 这里我们重点介绍一下opencv算子threshold。 threshold进行阈值分割时总共有5中可选择的类型, THRESH_BINARY:在运用该阈值类型的时候,先要选定一个特定的阈值量,比如:125,这样,新的阈值产生规则可以解释为大于125的像素点的灰度值设定为最大值(如8位灰度值最大为255),灰度值小于125的像素点的灰度值设定为0。 THRESH_BINARY_INV:该阈值化与二进制阈值化相似,先选定一个特定的灰度值作为阈值,不过最后的设定值相反。(在8位灰度图中,例如大于阈值的设定为0,而小于该阈值的设定为255) THRESH_TRUNC:同样首先需要选定一个阈值,图像中大于该阈值的像素点被设定为该阈值,小于该阈值的保持不变。(例如:阈值选取为125,那小于125的阈值不改变,大于125的灰度值(230)的像素点就设定为该阈值)。 CV_THRESH_TOZERO:先选定一个阈值,然后对图像做如下处理:1 像素点的灰度值大于该阈值的不进行任何改变;2 像素点的灰度值小于该阈值的,其灰度值全部变为0。 CV_THRESH_TOZERO_INV:原理类似于0阈值,但是在对图像做处理的时候相反,即:像素点的灰度值小于该阈值的不进行任何改变,而大于该阈值的部分,其灰度值全部变为0。
/* 0: 二进制阈值 1: 反二进制阈值 2: 截断阈值 3: 0阈值 4: 反0阈值 */ |
|