基于OpenCV的数字图像处理 课件 项目七 进行图像标注_第1页
基于OpenCV的数字图像处理 课件 项目七 进行图像标注_第2页
基于OpenCV的数字图像处理 课件 项目七 进行图像标注_第3页
基于OpenCV的数字图像处理 课件 项目七 进行图像标注_第4页
基于OpenCV的数字图像处理 课件 项目七 进行图像标注_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Labelme标注工具Labelme是一个用于图像标注和分割的开源工具,用Python语言编写,图形界面使用的是PyQt,广泛应用于计算机视觉和机器学习领域。它提供了一个直观且功能丰富的界面,使用户能够轻松地创建图像标注和分割数据集,以用于训练和评估模型。

Labeme简介Labelme安装Labelme安装和其它库的安装相同,在命令行窗口使用pipinstall命令,指定清华源镜像地址安装的labelme命令如下:pipinstalllabelme-i

/simple/Labelme使用步骤一:启动Labelme

在命令提示符窗口输入labelme即可启动lableme,启动后界面如图所示。Labelme使用步骤二:打开图像

单击“文件”菜单,选择“打开”,找到需要进行标注的图像所在目录,选择图像。Labelme使用步骤三:图像标注单击命令区域的创建多边形,在汽车周围进行单击标注,当最后一点和第一点重合时,代表标记完成,会自动弹出窗体,填写该物体的标签,输入car,完成汽车的标注。Labelme使用步骤四:解读json文件

完成标注后,单击保存命令,会在与图像相同的路径下生成一个默认与图像名称相同的json文件。version关键字对应的值表示Labelme的版本,shapes关键字的对应的值是用列表嵌套了一层字典,值中第一组键值对label:”car”,表示标签是car,第二组的键值对的键是points,值代表标注车辆的多边形的每个点的坐标。谢谢!文字绘制文字绘制函数openCV提供了在图像上绘制文字的函数cv2.putText(),可用于在图像上添加标签。函数定义格式如下:

‌‌img‌:要绘制文本的图像。text‌:

要绘制的文本字符串。‌org‌:

文本字符串左下角的坐标,格式为(x,y)。‌font‌:字体类型。预定义的字体有cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN等。fontScale‌:

字体比例因子,决定了字体的大小。color‌:文本的颜色,格式为BGR,即(蓝色,绿色,红色)。例如,(255,0,0)表示蓝色。thickness‌:线条的粗细。如果参数是负数,则文本会被填充。lineType‌:

线条的类型,如cv2.LINE_8、cv2.LINE_AA等。cv2.LINE_AA表示抗锯齿线条。bottomLeftOrigin‌:

布尔值,如果为False(默认值)。则图像数据原点在左上角。cv2.putText(img,text,org,font,fontScale,color,thickness=None,lineType=None,bottomLeftOrigin=None)文字绘制案例importcv2img=cv2.imread("image//dog.jpg")img1=img.copy()#参数依次为要绘制的图像、矩形的左上角、右下角坐标、以及长方形颜色cv2.rectangle(img1,(20,40),(170,120),(255,255,255))#参数依次为图像、书写的文字,文字左下角坐标位置、字体、字号、颜色、画笔粗细cv2.putText(img1,"dog",(30,100),cv2.FONT_HERSHEY_SIMPLEX,2,(0,255,255),2)cv2.imshow("img",img)cv2.imshow("label_img",img1)cv2.waitKey()cv2.destroyAllWindows()【例】在图像dog.jpg的左上角绘制白色矩形框,并在矩形框中标注黄色标签”dog”。文字绘制案例

(a)(b)

图(a)是原图,图(b)是添加文字标注的图像,绘制的矩形以及文字的位置可以根据显示效果进行细微调整。结果解析动动手

修改函数中的字体位置、字体大小、字体粗细、字体颜色、文字内容等参数,运行程序查看输出结果。谢谢!图像标注技能目标学会使用Labelme标注工具对图像进行批量标准。能根据标注文件生成数据列表供模型训练使用。图像标注技术不断更新换代,标注人员要具有学习意识,及时掌握新技术。有高度的责任心,确保每个标注任务都能正确完成。具有保密意识,对接触到的隐私信息必须能够进行保密,遵守相应的法律法规。项目背景图像标注的概念

图像标注是指通过为图像添加结构化标签或注释,使机器能够理解和处理视觉信息的过程。

图像标注将人类可理解的语义信息转化为机器可识别的数据格式,如类别标签、边界框、关键点等。

通过标注数据,计算机视觉系统能够建立对物体、场景、动作等视觉元素的识别能力。对机器学习模型的影响高质量的图像标注可以减少模型的训练时间和计算资源消耗。标注好的图像能让模型更快地收敛,避免无效的学习过程。例如在目标检测任务中,标注准确的边界框能使模型更高效地识别目标位置。提高效率图像标注为机器学习模型提供了精确的“监督信号”,使模型能够准确学习物体特征。例如在图像分类任务中,标注清晰的图像能让模型正确区分不同类别,如区分猫和狗,从而提高分类的准确性。提升准确性推动前沿领域发展标注医学影像(如X光、CT等)中的病变部位,能让模型学习病变特征,辅助医生进行疾病诊断,提高诊断的准确性和效率。医疗影像分析标注监控图像中的人物特征、动作等信息,能让模型快速准确地发现潜在威胁,如在公共场所识别盗窃行为。智能安防通过标注大量的道路图像,让模型学习不同场景下的交通元素,从而使自动驾驶汽车能够准确感知周围环境,做出安全的驾驶决策。自动驾驶项目任务项目任务

作为数据标注人员,需要对存放在image//文件夹中的大量图像进行标注。要求如下:(1)图像的原始名称不规范,需要对文件进行重命名,确保每张图像都有一个统一且易于管理的名称,如“0.jpg”、“1.jpg”、“2.jpg”等。(2)在每张图像上用文字标注其类别,确保标注的准确性和一致性。(3)根据图像标注的信息生成一个详尽的数据列表,为模型训练提供高质量的数据支持。任务准备任务准备对图像标注有多种形式,‌如多边形、‌矩形、‌圆形、‌多段线、‌线段、‌点等形式的标注,这些标注可以包括物体标注、场景标注、行为标注、情感标注、标签标注等多种内容。任务准备物体标注:指在图像中标注出物体的位置和类别。例如,在一张街景照片中,可以用矩形框出汽车、交通灯、行人等物体,并用文字描述物体的类别。任务准备场景标注:指在图像中标注出场景的内容和背景。例如,在一张森林照片中,可以用文字描述出森林的类型、季节、气候等信息。行为标注:指在图像中标注出人或动物的行为或动作。例如,在一张动物照片中,可以用文字描述出动物的种类、动作状态等信息。任务准备标签标注:指在图像中标注出关键字或标签,以便于搜索和分类图像。例如,在一张美食照片中,可以用文字描述出食物的种类、口感、食材等信息。情感标注:指在图像中标注出人或动物的情感状态。例如,在一张人物照片中,可以用文字描述人物的情感状态,如快乐、伤心、紧张等。谢谢!任务实施任务实施

对批量图像进行数据标注,并在原始图像上分别用文字标注图像类别,最后生成数据列表,供模型训练使用。

原始图像存放在image//data中,图像名称不规范,请对图像进行标注,并生成数据列表,数据列表中的图像以"0.jpg、1.jpg、2.jpg…"进行命名。分析步骤(1)对所有图像进行尺寸统一.将所有图像大小统一为(256,256),按要求重新命名,存放到image//output文件夹中;(2)使用标注工具labelme对图像分类标注,属于猫、狗的图像分别标注"cat"、“dog”,并生成json文件;(3)读取json文件中的标签,在图像上标注动物类别,并生成数据列表。项目代码importcv2importosimportrandomimportnumpyasnpdata_path="image//data"

#设置基本路径result_path="image//output"ifnotos.path.exists(result_path):os.makedirs(result_path)#生成目标图像路径步骤(1):定义尺寸变换函数,依次对每个图像进行大小变换及重命名项目代码#定义图像缩放函数,默认大小为256×256defresize(img,size=[256,256]):img=cv2.resize(img,size)returnimgimg_list=os.listdir(data_path)#列出文件夹中所有文件的名字fori,imginenumerate(img_list):img_path=os.path.join(data_path,img)#路径和图像名拼接image=cv2.imread(img_path,1)img0=resize(image)#调用图像缩放函数规范图像大小cv2.imwrite(os.path.join(result_path,str(i)+'.jpg'),img0)#保存变换后的样本

print('处理第{}个图像成功'.format(i))项目代码步骤(2):使用labelme对图像进行标注对路径image/output下每一个图像使用矩形框进行标注,如图7.5所示。每标注一个图像,单击保存按钮进行保存。图7.5对一张狗的图像进行标注项目代码默认保存在与图像相同路径下和图像同名的json文件中,如图7.6所示。图7.6生成的与图像同目录同名称的json文件项目代码步骤(3):根据json文件内容在图像上标注动物类别,并生成数据列表。

首先分析json文件的内容,生成的json文件的部分内容如下,希望读取label键的值dog。

{"version":"5.5.0","flags":{},"shapes":[{"label":"dog",....}项目代码#自定义读取json文件中label键值的函数get_label()defget_label(filepath):

#filepath为json文件的路径和名称label=""#定义变量label用来存放标签的值withopen(filepath,'r')asf:

#打开json文件content=json.load(f)

#将json文件读入并转换为字典类型temp=content.get("shapes")#获取键shapes的值存放在temp中#temp[0]表示shapes键对应值的第0个元素,调用get函数获取字典中键label的值label=temp[0].get("label")returnlabel#返回标签的值项目代码#引入所需的库,设置路径importcv2importosimportrandomimportnumpyasnpimportcodecsimportjsonroot_path="image"result_path=os.path.join(root_path,"output")file_list=os.path.join(root_path,'file.txt')#生成列表文件dog_path=os.path.join(root_path,"dog")cat_path=os.path.join(root_path,"cat")项目代码ifnotos.path.exists(dog_path):#生成存放狗图像的路径os.makedirs(dog_path)ifnotos.path.exists(cat_path):#生成存放猫图像的路径os.makedirs(cat_path)ifos.path.exists(file_list):#如果文件列表已存在,则删除,每次运行程序都重新生成os.remove(file_list)dog_count=0#定义狗的计数器,初始值为0cat_count=0#定义猫的计数器,初始值为0defget_label(filepath):label=""withopen(filepath,'r')asf:content=json.load(f)temp=content.get("shapes")label=temp[0].get("label")returnlabel项目代码#循环读取图片,并在图片上书写类别img_list=os.listdir(result_path)#读取所有图像的文件名withcodecs.open(file_list,'a','utf-8')asf_list:#打开列表文件fori,fileinenumerate(img_list):#以枚举方式读取,会自动生成计数器ifile_path=os.path.join(result_path,file)iffile.endswith('.json'):#判断读取的文件是否是json文件label=get_label(file_path)#读取json文件中的图像对应的label标签值img_name=file.split('.')[0]#拆分图像名和后缀,获取图像的名字

#将路径+名称+后最进行拼接获得图像名称old_path=os.path.join(result_path,img_name+".jpg")print(old_path)img=cv2.imread(old_path)cv2.rectangle(img,(0,0),(140,50),(255,255,255))cv2.putText(img,label,(10,45),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),2)项目代码f_list.write("{0}\t{1}\n".format(old_path,label))

#将图像路径和标签写入列表文件

iflabel=='dog':#如果读取的标签是dogdog_count=dog_count+1#狗的计数器+1new_path=os.path.join(dog_path,'dog'+str(dog_count)+'.jpg')cv2.imwrite(new_path,img)print("处理第{}个狗完毕".format(dog_count))else:#如果读取的标签是catcat_count=cat_count+1new_path=os.path.join(cat_path,'cat'+str(cat_count)+'.jpg')cv2.imwrite(new_path,img)print("处理第{}个猫完毕".format(cat_count))else:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论