最近写的一个程序从hdevelop导出到C++程序中,在complement(Region : RegionComplement : : )这个算子之后产生的区域始终不对。
刚开始以为是dll的问题,更换后还是一样的异常。
又或者是缓存大小问题,重新设置了还是一样。
然后看看手册中有没有注意事项,然后发现了
If the system flag 'clip_region' is 'true', which is the default, the difference of the largest image processed so far (see reset_obj_db) and the input region is returned.
好家伙,怎么把这个茬给忘记了。
之前我们直接加载区域会被默认512x512大小给裁剪,一般我们采取办法是读取一张实际处理分辨率大小的图像来扩充缓存区。
然后另外一种办法是,设置区域不被裁剪,坑由此而产生了,对于这个算子来说,不裁剪那就是最大区域了。
所以如果你的算法中存在求补集这样的功能,就千万别设置不裁剪这种方法(就是裁剪区域设置为false)。
必须屏蔽代码或者设置为true:
- //SetSystem ("clip_region", "false");
复制代码 改成设置图像大小形式(根据图像大小设置hv_Width,hv_Height):
- SetSystem("tsp_width", hv_Width);
- SetSystem("tsp_height", hv_Height);
复制代码 问题解决!
|