绘制COCO数据集结果
import os
import time
import datetime
import mmcv
import cv2 as cv
import json
import numpy as np
import pycocotools.mask as maskutil
import pycocotools.coco as COCO
from itertools import groupby
from skimage import measure,draw,data
from PIL import Image def close_contour(contour):
if not np.array_equal(contour[0], contour[-1]):
contour = np.vstack((contour, contour[0]))
return contour def binary_mask_to_polygon(binary_mask, tolerance=0):
"""Converts a binary mask to COCO polygon representation
Args:
binary_mask: a 2D binary numpy array where '1's represent the object
tolerance: Maximum distance from original points of polygon to approximated
polygonal chain. If tolerance is 0, the original coordinate array is returned.
"""
polygons = []
# pad mask to close contours of shapes which start and end at an edge
padded_binary_mask = np.pad(binary_mask, pad_width=1, mode='constant', constant_values=0)
contours = measure.find_contours(padded_binary_mask, 0.5)
contours = np.subtract(contours, 1)
for contour in contours:
contour = close_contour(contour)
contour = measure.approximate_polygon(contour, tolerance)
if len(contour) < 3:
continue
contour = np.flip(contour, axis=1)
segmentation = contour.ravel().tolist()
# after padding and subtracting 1 we may get -0.5 points in our segmentation
segmentation = [0 if i < 0 else i for i in segmentation]
polygons.append(segmentation) return polygons def binary_mask_to_rle(binary_mask):
rle = {'counts': [], 'size': list(binary_mask.shape)}
counts = rle.get('counts')
for i, (value, elements) in enumerate(groupby(binary_mask.ravel(order='F'))):
if i == 0 and value == 1:
counts.append(0)
counts.append(len(list(elements)))
return rle def main2():
seg=np.array([312.29, 562.89, 402.25, 511.49, 400.96, 425.38, 398.39, 372.69, 388.11, 332.85, 318.71, 325.14, 295.58, 305.86, 269.88, 314.86, 258.31, 337.99, 217.19, 321.29, 182.49, 343.13, 141.37, 348.27, 132.37, 358.55, 159.36, 377.83, 116.95, 421.53, 167.07, 499.92, 232.61, 560.32, 300.72, 571.89])
compactedRLE = maskutil.frPyObjects([seg], 768, 768)
print(compactedRLE)
#compactedRLE=[
# {"size":[768, 768],
# "counts": "`eQ66ig02O1O000000000000000000000000001O00000000000000000000000000000000000000000000000000000000O2O0NbZj:"
# }]
mask = maskutil.decode(compactedRLE)
mask=np.reshape(mask,(768,768))
mask[:,:]=mask[:,:]*255
print(mask)
#mmcv.imshow(mask) '''
mask=np.array(
[
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 1, 0],
[0, 0, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 0, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0]
]
)
print(mask)
''' poly=binary_mask_to_polygon(mask)
print(poly)
rle=binary_mask_to_rle(mask)
print(rle)
#mmcv.imshow(area) return 0 def class2color(classes=1,class_id=0):
sum = classes*12357
return [sum%(class_id+0),sum%(class_id+1),sum%(class_id+2)] def mainContour():
imgfile = "/home/wit/Pictures/7dd98d1001e9390100d9e95171ec54e737d19681.jpg"
img = cv.imread(imgfile)
h, w, _ = img.shape gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) ret, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY) # Find Contour
_, contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
print(contours) def main():
testimagepath = "/media/wit/WeiJX/AirbusShip/coco-labels/instances_ships_test2018.json"
compressedRLECOCOlabelpath = "/media/wit/WeiJX/workspace/out/maskrcnn.reorg.pkl.json"
imageprefix = "/media/wit/WeiJX/AirbusShip/test-images/" startTime = time.time()
trthset = json.load(open(testimagepath, 'r'))
assert type(trthset) == dict, 'annotation file format {} not supported'.format(type(trthset))
prdcset = json.load(open(compressedRLECOCOlabelpath, 'r'))
assert type(prdcset) == dict, 'annotation file format {} not supported'.format(type(prdcset))
print('Done (t={:0.2f}s)'.format(time.time() - startTime)) ann_Y0 = trthset['annotations']
ann_Y1 = prdcset['annotations'] for image in trthset['images']:
imagepath = imageprefix+image['file_name']
img = cv.imread(imagepath) src = np.zeros((768,768,3), np.uint8)
src[:,:,:]=img[:,:,:]
dst = np.zeros((768,768,3), np.uint8)
dst[:,:,:]=img[:,:,:] masks = np.zeros((768, 768, 1), np.uint8)
masks.fill(0)
id0 = image['id'] counts = 0 contours = []
for target in ann_Y0:
if target['image_id']==id0:
counts += 1
j=0
X=[]
Y=[]
for seg in target['segmentation'][0]:
if j == 0:
x = float(seg)
X.append(x)
else:
y = float(seg)
Y.append(y)
j = 1-j rr, cc = draw.polygon(Y, X)
draw.set_color(src, [rr, cc], [0, 0, 255], 0.4) Point = np.zeros((len(Y), 2), dtype='int32')
Point [:, 0] = X[:]
Point [:, 1] = Y[:]
#print(Point)
cv.fillPoly(masks, np.array([Point],'int32'), 1)
src[:, :, 0] = img[:, :, 0] #* 0.9 + masks[:, :, 0] * 0.1 * 255.0 / counts
src[:, :, 1] = img[:, :, 1] #* 0.9 + masks[:, :, 0] * 0.1 * 255.0 / counts
src[:, :, 2] = img[:, :, 2] * 0.2 + masks[:, :, 0] * 0.8 * 255.0 / counts mmcv.imshow(src,"Y",1) masks.fill(0)
counts = 0
for target in ann_Y1:
if target['image_id']==id0:
counts += 1
CRLE = target['segmentation']
#print(CRLE)
mask = maskutil.decode(CRLE)
mask = np.reshape(mask, (img.shape[1], img.shape[0], 1))
masks[:, :] = masks[:, :] + mask[:, :] dst[:, :, 0] = img[:, :, 0] * 0.2 + masks[:, :, 0] * 0.8 * 255.0/counts
dst[:, :, 1] = img[:, :, 1] #* 0.5 + masks[:, :, 0] * 0.5 * 255.0/counts
dst[:, :, 2] = src[:, :, 2] * 0.9 + masks[:, :, 0] * 0.1 * 255.0/counts
mmcv.imshow(dst,"Y'") return 0 if __name__ == '__main__':
main()
绘制COCO数据集结果的更多相关文章
- [PocketFlow]解决TensorFLow在COCO数据集上训练挂起无输出的bug
1. 引言 因项目要求,需要在PocketFlow中添加一套PeleeNet-SSD和COCO的API,具体为在datasets文件夹下添加coco_dataset.py, 在nets下添加pelee ...
- COCO 数据集的使用
Windows 10 编译 Pycocotools 踩坑记 COCO数据库简介 微软发布的COCO数据库, 除了图片以外还提供物体检测, 分割(segmentation)和对图像的语义文本描述信息. ...
- COCO数据集深入理解
TensorExpand/TensorExpand/Object detection/Data_interface/MSCOCO/ 深度学习数据集介绍及相互转换 Object segmentation ...
- COCO 数据集使用说明书
下面的代码改写自 COCO 官方 API,改写后的代码 cocoz.py 被我放置在 Xinering/cocoapi.我的主要改进有: 增加对 Windows 系统的支持: 替换 defaultdi ...
- Pascal VOC & COCO数据集介绍 & 转换
目录 Pascal VOC & COCO数据集介绍 Pascal VOC数据集介绍 1. JPEGImages 2. Annotations 3. ImageSets 4. Segmentat ...
- 在ubuntu1604上使用aria2下载coco数据集效率非常高
简单的下载方法: 所以这里介绍一种能照顾大多数不能上外网的同学的一种简单便捷,又不会中断的下载方法:系统环境: Ubuntu 14.04 方法: a. 使用aria2 搭配命令行下载.需要先安装: s ...
- MS coco数据集下载
2017年12月02日 23:12:11 阅读数:10411 登录ms-co-co数据集官网,一直不能进入,FQ之后开看到下载链接.有了下载链接下载还是很快的,在我这儿晚上下载,速度能达到7M/s,所 ...
- coco数据集标注图转为二值图python(附代码)
coco数据集大概有8w张以上的图片,而且每幅图都有精确的边缘mask标注. 后面后分享一个labelme标注的json或xml格式转二值图的源码(以备以后使用) 而我现在在研究显著性目标检测,需要的 ...
- COCO数据集使用
一.简介 官方网站:http://cocodataset.org/全称:Microsoft Common Objects in Context (MS COCO)支持任务:Detection.Keyp ...
随机推荐
- axios+post方法提交formdata步骤详解
遇到的问题 :怎么看自己发送的格式和后台发送的格式 参考 http://www.php.cn/js-tutorial-396014.html https://blog.csdn.net/qq73705 ...
- js中的值类型和引用类型的区别
1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(String).数值(Number).布尔值(Boolean).Undefined.Null (这5种基本数据类型是按 ...
- bash shell执行方式
五种bash shell执行方式 fork, source, exec, (), {} Shell脚本的执行方式: 注明:wd代表“脚本保存的目录” 1.fork语法:/wd/shell.shfork ...
- mui 卡片视图 遮罩蒙版
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- HTML调用PC摄像头【申明:来源于网络】
HTML调用PC摄像头[申明:来源于网络] ---- 地址:http://www.oschina.net/code/snippet_2440934_55195 <!DOCTYPE html> ...
- Selenium 3----控制浏览器操作
控制浏览器窗口大小 eg:将浏览器设置成移动端大小(480*800),进行访问 set_window_size()方法: from selenium import webdriver driver=w ...
- springboot 2.0部署到Tomat8.5上
1.改jar为war 2.改下打包的名字 3.删掉tomcat的webapps下面的所有文件夹.将打好的jar包放入到webapps下 4.运行tomcat,双击shutdown.bat 注意: sp ...
- 作业二 分布式版本控制系统Git的安装与使用
第一步:Git bash配置 修改用户名和邮箱地址: $ git config --global user.name "zzj" $ git config --global use ...
- C0气体传感器分析
1.外观.价格 2.工作原理 MQ-7 CO气体传感器使用的敏感元件为气敏材料(SnO2),该传感器对一氧化碳的灵敏度高. SnO2在洁净空气中电导率低,传感器的电导率随着空气中CO气体浓度增加而增大 ...
- 最全的MonkeyRunner自动化测试从入门到精通(8)
在eclipse中的一些剩余配置操作步骤一:pyhon的在eclipse配置,如图所示: 步骤二:jython的在eclipse中的配置, 在window-preference-PyDev-Jytho ...