Halcon 提取ROI区域

27 篇文章 1 订阅
19 篇文章 1 订阅

因reduce_domain提取的图像的大小与原图像大小保持一致,虽然可以结合crop_domain一起使用,去掉没有用到的区域;

但因reduce_domain提取的图像与实际所要的区域有一定区别(注:本人测试过程中,虽然提取的是原图像(三通道图像),但

提取出的图像与原图像有一定的区别(提取出的图像与region图像相同,而不是原图像))所以,可使用 crop_rectangle1对图像

进行提取;

void SubImageByHalcon()

{
Hobject hImg, grayImg, regions, conRegions;

gen_empty_obj(&hImg);
gen_empty_obj(&grayImg);
gen_empty_obj(&regions);
gen_empty_obj(&conRegions);


read_image(&hImg, "1.bmp");
Hlong channels = 0;
count_channels(hImg, &channels);
if (channels == 3)
rgb1_to_gray(hImg, &grayImg);
else
copy_image(hImg, &grayImg);


Hlong threshold = 0;
char_threshold(grayImg, grayImg, &regions, 0, 95, &threshold); //该函数只能处理“白纸黑字”的字符,即背景偏亮,字符偏暗的情况
connection(regions, &conRegions);
Hobject selRegions;
select_shape(conRegions, &selRegions, "area", "and", 20, 99999);
Hlong regionCount;
count_obj(selRegions, &regionCount);


Hobject reduceImg, roi, subImage;
char fileName[1024] = { 0 };
HTuple rows, cols;
double top, left, bottom, right;
for (int i = 0; i < regionCount; ++i)
{
select_obj(selRegions, &roi, i + 1);
get_region_points(roi, &rows, &cols);
tuple_min(rows, &top);
tuple_min(cols, &left);
tuple_max(rows, &bottom);
tuple_max(cols, &right);


crop_rectangle1(hImg, &subImage, top, left, bottom, right);


sprintf_s(fileName, "SubImage\\%d.bmp", i + 1);
write_image(subImage, "bmp", 0, fileName);
}


}
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值