python物体标识怎么实现
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要为大家展示了"python物体标识怎么实现",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python物体标识怎么实现"这篇文章吧。1、读取彩色
千家信息网最后更新 2025年01月16日python物体标识怎么实现
这篇文章主要为大家展示了"python物体标识怎么实现",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python物体标识怎么实现"这篇文章吧。
1、读取彩色图像进行灰度化和二值化。
def get_binary_img(img): # gray img to bin image bin_img = np.zeros(shape=(img.shape), dtype=np.uint8) h = img.shape[0] w = img.shape[1] for i in range(h): for j in range(w): bin_img[i][j] = 255 if img[i][j] < 255 else 0 return bin_img# 调用file_name = "./test.bmp"img = cv2.imread(file_name)# 灰度化gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化bin_img = get_binary_img(gray_img)
2、目标标志,每个物体的像素值是该物体的标志,为计算面积打下基础。
# 标记目标def label_region(bin_img,width,height): visited = np.zeros(shape=bin_img.shape,dtype=np.uint8) label_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) label = 0 for i in range(height): for j in range(width): if bin_img[i][j] == 255 and visited[i][j]==0 : //找到种子点 # visit visited[i][j] = 1 label += 1 label_img[i][j] = label # label label_from_seed(bin_img, visited, i, j, label, label_img) return label_img# 区域增长法进行标记def label_from_seed(bin_img,visited,i,j,label,out_img): directs = [(-1, -1), (0, -1), (1, -1), (1, 0), (1, 1), (0, 1), (-1, 1), (-1, 0)] seeds = [(i,j)] height = bin_img.shape[0] width = bin_img.shape[1] while len(seeds): seed = seeds.pop(0) i = seed[0] j = seed[1] if visited[i][j] == 0: visited[i][j] = 1 out_img[i][j] = label # 以(i,j)为起点进行标记 for direct in directs: cur_i = i + direct[0] cur_j = j + direct[1] # 非法 if cur_i < 0 or cur_j < 0 or cur_i >= height or cur_j >= width: continue # 没有访问过 if visited[cur_i][cur_j] == 0 and bin_img[cur_i][cur_j] == 255: visited[cur_i][cur_j] = 1 out_img[cur_i][cur_j] = label seeds.append((cur_i,cur_j))
3、通过遍历标记的图像,统计每个编号中出现的像素数,可以得到不同区域的面积大小。
def get_region_area(label_img,label): count = { key: 0 for key in range(label + 1)} start_pt = {key:(0,0) for key in range(label + 1)} height = label_img.shape[0] width = label_img.shape[1] for i in range(height): for j in range(width): key = label_img[i][j] count[key] += 1 if count[key] == 1: start_pt[key] = (j,i) return count,start_pt
以上是"python物体标识怎么实现"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
物体
标记
标识
内容
篇文章
像素
区域
图像
标志
灰度
目标
面积
学习
帮助
不同
像素数
基础
大小
彩色
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
常用数据库英文
陕西浪潮服务器维修维保价格
人事管理系统数据库实践报告
英雄战纪星际迷航是哪个服务器
网络技术需要实践的内容
危害网络安全的表
表格中怎么保存到数据库
西安创天网络科技 互联网协会
网络安全法简称
云丁网络技术有限公司
信息中心网络安全保障脚本
上海护壹软件开发是做什么的
河北it软件开发系统
软件开发外包合同 百度网盘
服务器 多少位
服务器空间软件
分布式数据库可以查看记录吗
服务器端口关管理
58同城有服务器吗
湖北web前端软件开发定制费用
昌平区网络技术咨询优点
商品公司销售数据库
数据库sql注入攻击
综合管理平台服务器价格
四川浪潮服务器维修维保哪家便宜
医药魔方数据库融资
百诺名医汇网络技术有限公司
软件开发系统故障
怎么建立一个临床数据库
畅言网络安全