最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)json轉(zhuǎn)yolo格式

 更新時間:2023年12月08日 09:11:05   作者:小鹿學(xué)程序  
在目標(biāo)檢測數(shù)據(jù)集處理中,我們經(jīng)常會遇到標(biāo)簽之間不同格式的轉(zhuǎn)化,本文主要介紹了python實現(xiàn)json轉(zhuǎn)yolo格式,具有一定的參考價值,感興趣的可以了解一下

json轉(zhuǎn)yolo格式

視覺分割得一些標(biāo)注文件是json格式,比如,舌頭將這個舌頭區(qū)域分割出來(用mask二值圖的形式),對舌頭的分割第一步是需要檢測出來,缺少數(shù)據(jù)集,可以使用分割出來的結(jié)果,將分割的結(jié)果轉(zhuǎn)化成可以用于目標(biāo)檢測的數(shù)據(jù)集。
下面是將json文件轉(zhuǎn)化成一個yolov8的數(shù)據(jù)格式,首先看一下json的數(shù)據(jù)格式:

json的數(shù)據(jù)格式

我關(guān)注的就是"shapes"這個字段因為它是我舌頭區(qū)域的坐標(biāo)點,其次關(guān)注的是 “imageHeight”: 圖片的高, “imageWidth”: 圖片的寬。這些在生成yolov8格式的檢測框的時候啥都有用。

{
  "version": "5.2.1",
  "flags": {},
  "shapes": [
    {
      "fill_color": null,
      "line_color": null,
      "label": "tongue",
      "points": [
        [
          700.361963190184,
          510.8926380368097
        ],
		.......
        [
          573.9815950920246,
          515.1871165644171
        ],  
      ],
      "group_id": null,
      "description": null,
      "shape_type": "polygon",
      "flags": {}
    }
  ],
  "imagePath": "0000.jpg",
  "imageData": "iVBORw0KGgoA.....................AAAAAElFTkSuQmCC",
  "imageHeight": 777,
  "imageWidth": 1286,
  "fillColor": [
    255,
    0,
    0,
    128
  ],
  "lineColor": [
    0,
    255,
    0,
    128
  ]
}

yolo數(shù)據(jù)格式

對應(yīng)的yolov8的數(shù)據(jù)格式就是yolo系列的標(biāo)簽存儲形式

yolo系列對應(yīng)的是[class x y w’ h’]。注意 class也就是label標(biāo)簽, x y 就是(x, y)表示中心橫坐標(biāo)與圖像寬度、高度的比值,w’ :檢測框box寬度與圖像寬度比值,h’:檢測框高度與圖像高度比值。

# 一個txt文件
0 0.507394403152401 0.5280297826310096 0.49941035598087944 0.33793653425555276
1 0.407394403152401 0.9280297826310096 0.19941035598087944 0.33793653425555276
2 0.37394403152401 0.5280297826310096 0.19941035598087944 0.13793653425555276

代碼

def json_to_yolov8(data):
	# 獲取原圖的寬和高
    image_width = data['imageWidth']
    image_height = data['imageHeight']

    for shape in data['shapes']:
        if shape['label'] == 'tongue':
            points = shape['points']
            x_min = min(point[0] for point in points)
            x_max = max(point[0] for point in points)
            y_min = min(point[1] for point in points)
            y_max = max(point[1] for point in points)

            x_center = (x_min + x_max) / 2
            y_center = (y_min + y_max) / 2
            w = x_max - x_min
            h = y_max - y_min

            x_center /= image_width
            y_center /= image_height
            w /= image_width
            h /= image_height

            yolov8_box = [0, x_center, y_center, w, h]

    return yolov8_box

# Replace 'your_json_file.json' and 'your_image.jpg' with the actual paths
json_folder = "path/to/json"  # 輸入json文件的路徑位置
yolov8_labels = 'path/to/txt' # 輸出的目標(biāo)文件存放路徑
for json_file in os.listdir(json_folder):
       if json_file.endswith('.json'):
            json_name = os.path.basename(json_file).split('.')[0]
            output_file = os.path.join(yolov8_labels, f'{json_name}.txt')
            jsonfile = os.path.join(json_folder, f'{json_name}.json')
            
            with open(jsonfile, 'r') as file:
                data = json.load(file)
                
            yolov8_box = json_to_yolov8(data)
            
            with open(output_file, 'w') as f:
                result_str = ' '.join(str(data) for data in yolov8_box)
                f.write(result_str)
print("over!")

到此這篇關(guān)于python實現(xiàn)json轉(zhuǎn)yolo格式的文章就介紹到這了,更多相關(guān)python json轉(zhuǎn)yolo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python 刪除文件每一行的行號思路解讀

    Python 刪除文件每一行的行號思路解讀

    有時候我們需要刪除代碼中的行號,比如在把代碼復(fù)制到記事本中的時候,前邊的行號不刪除就沒辦法運(yùn)行,我們要手動刪掉代碼段前的行號,才能運(yùn)行代碼。如果有幾百行,就非常累,非常不爽,所以這種事還是要交給計算機(jī)去做
    2021-11-11
  • Tensorflow 自定義loss的情況下初始化部分變量方式

    Tensorflow 自定義loss的情況下初始化部分變量方式

    今天小編就為大家分享一篇Tensorflow 自定義loss的情況下初始化部分變量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python隨機(jī)生成大小寫字母數(shù)字混合密碼(僅20行代碼)

    python隨機(jī)生成大小寫字母數(shù)字混合密碼(僅20行代碼)

    這篇文章主要介紹了python隨機(jī)生成大小寫字母數(shù)字混合密碼,主要是利用random模塊隨機(jī)生成數(shù)字,大小寫字母,通過循環(huán)次數(shù)來實現(xiàn)此功能,需要的朋友可以參考下
    2020-02-02
  • 使用Python輕松實現(xiàn)創(chuàng)建與合并PowerPoint幻燈片

    使用Python輕松實現(xiàn)創(chuàng)建與合并PowerPoint幻燈片

    在日常工作和報告制作中,將多個?PowerPoint?演示文稿合并成一個?是常見需求,本文將演示如何使用?Python?合并兩個演示文稿,感興趣的小伙伴可以了解下
    2025-11-11
  • Python?ChineseCalendar包主要類和方法詳解

    Python?ChineseCalendar包主要類和方法詳解

    ChineseCalendar?是一個?Python?包,用于獲取中國傳統(tǒng)日歷信息。這個包提供了中國農(nóng)歷、二十四節(jié)氣、傳統(tǒng)節(jié)日、黃歷等信息,這篇文章主要介紹了Python?ChineseCalendar包簡介,需要的朋友可以參考下
    2023-03-03
  • Python PyTorch實現(xiàn)Timer計時器

    Python PyTorch實現(xiàn)Timer計時器

    這篇文章主要為大家詳細(xì)介紹了Python PyTorch如何實現(xiàn)簡單的Timer計時器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • python文件處理筆記之文本文件

    python文件處理筆記之文本文件

    相信大家在測試任務(wù)過程中都或多或少遇到自己處理文本文件的情況,這篇文章主要給大家介紹了關(guān)于python文件處理筆記之文本文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Python實現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    Python實現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼的示例代碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題及解決方法

    Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題及解決方法

    這篇文章主要介紹了Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python redis 批量設(shè)置過期key過程解析

    python redis 批量設(shè)置過期key過程解析

    這篇文章主要介紹了python redis 批量設(shè)置過期key過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11

最新評論

海门市| 徐闻县| 高清| 沂南县| 富蕴县| 拜泉县| 满洲里市| 威远县| 福海县| 凤山市| 林周县| 米脂县| 芜湖县| 东乡县| 武宁县| 镇赉县| 灵台县| 五寨县| 琼结县| 锦州市| 梁平县| 绩溪县| 东港市| 武夷山市| 阿坝| 寻乌县| 洛宁县| 晋宁县| 安塞县| 淮南市| 安平县| 平阳县| 芜湖市| 东台市| 革吉县| 奇台县| 大化| 深泽县| 浙江省| 清远市| 长泰县|