简易图片打像素标签工具
生活随笔
收集整理的這篇文章主要介紹了
简易图片打像素标签工具
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼鏈接:
功能:
制作圖片像素點數據集。
打開文件夾中的圖片,通過鼠標點擊圖片獲取所在鼠標點的像素值,并把打的標簽導出為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:鼠標所在的位置
創建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()總結
以上是生活随笔為你收集整理的简易图片打像素标签工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红亚太学链之区块链技术深度剖析第7章
- 下一篇: md4 java_求MD4 java实现