代码链接:

功能:

制作图片像素点数据集

打开文件夹中的图片,通过鼠标点击图片获取所在鼠标点的像素值,并把打的标签导出为txt。

导入必要的函数库

import math
import os
import cv2 as cv
import numpy as np

定义一些全局变量后面会用到。patchsize表示采集的像素patch大小。

mode = True
testflag = False
idex = 0
patchsize = 9  # 对应像素块大小
# 读取图片
dir = './pic'  # 图片存放的目录

定义读取图片的函数,方便后面循环调用文件夹内的图片。读取后的图片是narray的格式。

def readImage(dir, idex):"""读取图片"""filelist = os.listdir(dir)imgname = os.path.join(dir, filelist[idex])img1 = cv.imread(imgname)  # 这里必须用cv库里面的imread,否则格式不对会报错return img1

定义bgr_patch函数获得像素所处patch的像素平均值

def bgr_patch(img, y, x):"""输入图片img,输入对应的坐标y,x,输出这个坐标周围一个patch的像素平均值"""global patchsizen = math.floor(patchsize / 2)bgr = img[y - n:y + (n + 1), x - n:x + (n + 1)]  # 选取 5*5=25 的区域size = bgr.shape[0]sum1 = np.array([0, 0, 0])for i in range(size):for j in range(size):sum1 = sum1 + bgr[i, j]ave = sum1 / (size * size)ave = np.array([round(ave[0]), round(ave[1]), round(ave[2])])print(f"bgr test is {ave}")return ave

定义一个窗口函数,作为setMouseCallback的回调函数。在窗口函数中,通过鼠标的不同操作和键盘的操作实现不同的功能。

  • x,y:鼠标所在的位置

# 定义一个窗口
def draw_(event,x, y,flag,param):global idex, dir, mode, data, img1, testflag, patchsizen = math.floor(patchsize / 2)filelist = os.listdir(dir)if event == cv.EVENT_LBUTTONDOWN:"""左键单击打标签,按e打环境标签,按r打道路标签,按t切换测试集,中间滚动切换图片,按c退出"""xy = "%d,%d" % (x, y)# bgr = img1[y, x]  # 按照BGR排列,x和y是相反的# print(f"bgr origin is {bgr}")bgr = bgr_patch(img1, y, x)  # 使用patchif mode:"""道路"""rgb = [bgr[2], bgr[1], bgr[0], y, x, 1]  # 转换成RGB排列y_size = img1.shape[0]x_size = img1.shape[1]rgb = [bgr[2] / 255, bgr[1] / 255, bgr[0] / 255,x / x_size, y / y_size, 1]  # 归一化 数值取到0——1之间print(f"rgb guiyi is {rgb}")cv.circle(img1, (x, y), n, (255, 0, 0), thickness=-1)# cv.putText(img1,xy,(x,y),fontFace=cv.FONT_HERSHEY_PLAIN# fontScale=2.0,color=(0,0,0),thickness= 1) # 显示标签值data.append(rgb)else:"""非道路"""rgb = [bgr[2], bgr[1], bgr[0], y, x, 0]  # 转换成RGB排列y_size = img1.shape[0]x_size = img1.shape[1]rgb = [bgr[2] / 255, bgr[1] / 255, bgr[0] / 255, x / x_size,y / y_size, 0]  # 归一化 数值取到0——1之间print(f"rgb guiyi is {rgb}")cv.circle(img1, (x, y), n, (0, 0, 255), thickness=-1)# cv.putText(img1,xy,(x,y),fontFace=cv.FONT_HERSHEY_PLAIN,# fontScale=2.0,color=(0,0,0),thickness= 1) # 显示标签值data.append(rgb)if event == cv.EVENT_MOUSEWHEEL:"""滚动触发图片切换"""if idex != len(filelist) - 2:idex = idex + 1else:idex = 0img1 = readImage(dir, idex)if event == cv.EVENT_MBUTTONDOWN:"""单击鼠标中间,存储数据"""if testflag:file = open('data_test.txt', mode='w+')file.writelines(str(data))file.close()else:file = open('data_train.txt', mode='w+')file.writelines(str(data))file.close()

创建opencv窗口,命名为image,设置鼠标响应函数

cv.namedWindow('image')
cv.setMouseCallback('image', draw_)

主函数写在while循环里面。


# 创建一个列表存储标签和RGB值
data = []
label = []
img1 = readImage(dir, idex)while 1:cv.imshow('image', img1)k = cv.waitKey(1) & 0xFFif k == ord('r'):mode = Trueelif k == ord('e'):mode = Falseelif k == ord('t'):testflag = ~testflagprint(f"[testflag] is :{testflag}")elif k == ord('c'):break
cv.destroyAllWindows()

简易图片打像素标签工具相关推荐

  1. java去掉html中的图片,java去掉html标签工具

    java去掉html标签工具 [2021-01-31 16:18:56]  简介: php去掉所有标签的方法:1.使用"strip_tags"方法去掉HTML及PHP的标记:2.通 ...

  2. 图片大小/像素/分辨率之间有什么关系

    正文 字体大小:大 中 小 图片大小/像素/分辨率之间有什么关系 (2013-07-01 19:30:55) 转载▼ var tag=′像素,分辨率,英寸′;vartag='像素,分辨率,英寸';va ...

  3. python 使用PySide2 制作简易图片查看、视频播放器 ,利用pyinstaller 打包发布

    PySide2简易制作 1.Qt界面制作 2 .图像的读取转换 2.1 文件读取 2.2 图像转换 3 .主函数代码 4.文件打包 5.效果展示 5.1 图片查看 5.2 视频播放 6 .代码获取   ...

  4. OpenCV探索之路(二十五):制作简易的图像标注小工具

    搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...

  5. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  6. Shader学习12——简易图片叠加

    看到蛮牛有人想要两个带透明通道的图片叠加,就是最简单的纹理混合,想想其实实现起来应该很简单,但是搜了一下还真没搜到,这里简单实现一下,要求底图需要是不透明的: image.png image.png ...

  7. 深度学习中常见的打标签工具和数据集资源

    深度学习中常见的打标签工具和数据集资源 一.打标签工具 1. labelimg/labelme 1.1 搭建图片标注环境(win10) (1) 安装anaconda3 (2) 在anaconda环境p ...

  8. 虚拟文字内容、图片、头像生成工具

    现在设计行业是非常注重版权的,不是随便拿张素材.图片就能放到你的设计稿上面去哦,所以设计达人网一直坚持寻找版权免费使用的素材给大家!不过今天主要是不是素材,而且分享一些虚拟文字.图片.头像生成工具,比 ...

  9. 在线 像素画 工具 PX-Art

    像素画 工具 PX-Art http://makyoo.cn/pixel/pixel.html 本工具 支持 在线 创作 绘画 像素画 可直接保存创作的文件到本地 可以2次打开进行继续创作 同时可以另 ...

最新文章

  1. matlab 绘制方格网格(二维)
  2. 元素,布局方式,BFC和清除浮动
  3. python判断文件是否为空文件对象_判断Python对象是不是为文件对象的方法有哪些...
  4. 记录一下LabelImg实际绘制框颜色的位置
  5. android输入法中的imeoption
  6. Request.InputStream 将数据作为XML数据发送
  7. 测试开发岗面试问题-工具类
  8. Linux卸载Mysql
  9. 计算机网络—路由器(Cisco Packet Tracer)常用的命令总结
  10. Spark createDirectStream 维护 Kafka offset(Scala)
  11. 国外大牛开发者创造出Siri第三方服务器
  12. SPSS详细图文教程:手把手教你配对样本t检验,
  13. Java进销存管理系统
  14. 上海PHP09期,平均薪资10246元,毕业03个工作日,就业率达62.50%
  15. 生物医学工程实用在线工具
  16. python计算2的n次方编写_python中n次方怎么表示
  17. 长租公寓如何管理水电及租金?
  18. 程序自动化 linux_自动化Windows子系统Linux安装程序
  19. 【陈工笔记】# 微信小程序实现的基础步骤速记,持续更新关键词 #
  20. (附源码)计算机毕业设计SSM科技类产品众筹系统

热门文章

  1. 《JAVA: 学习导图》
  2. Silverlight——施工计划日报表(一)
  3. K8sAPI接口文档
  4. lenb和len的区别
  5. enable 华为交换机ntdp_华为交换机常用命令
  6. 亚马逊如何使用二次验证码?
  7. 第一次面试(厦门西联电子)
  8. Win11的两个实用技巧系列之没有声音如何解决、bat代码怎么写
  9. 唯品会密码JS解密与python模拟登录
  10. 解决WinPcap无法安装的问题