mask图像获取物体标注框(仅限一张图片一个物体)

这是我自己写的程序,mask图像就是类似下面的图像,黑色部分为1,白色部分为255.

使用下面程序可以获得物体的位置.

import cv2


# 判断第y行中是否存在物体
def is_row_exist_object(image, y, xx):
    for x in range(0, xx):
        if image[y, x] > 128:
            return True
    return False


# 判断第x列是否存在物体
def is_col_exist_object(image, x, low_bound, high_bound):
    for y in range(low_bound, high_bound + 1):
        if image[y, x] > 128:
            return True
    return False


# 获取mask最上边的点,最左边点,最右边点以及最下面点的坐标
def get_res_list(fliename):
    image = cv2.imread(fliename, cv2.IMREAD_GRAYSCALE) 
    yy, xx = image.shape
    res_list = []

    for up_y in range(0, yy):
        if is_row_exist_object(image, up_y, xx):
            res_list.append(up_y)
            break

    for y in range(0, yy):
        down_y = yy - y - 1
        if is_row_exist_object(image, down_y, xx):
            res_list.append(down_y)
            break

    for left_x in range(0, xx):
        if is_col_exist_object(image, left_x, res_list[0], res_list[1]):
            res_list.append(left_x)
            break

    for x in range(0, xx):
        right_x = xx - x - 1
        if is_col_exist_object(image, right_x, res_list[0], res_list[1]):
            res_list.append(right_x)
            break

    res = [res_list[2], res_list[0], res_list[3], res_list[1]]

    return res

算法速度很快,但是只适用于一幅图像仅有一个物体的情况或没有物体.

转载请附上链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值