json轉yolo格式

json轉yolo格式

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

json的數據格式

我關注的就是"shapes"這個字段因為它是我舌頭區域的坐標點,其次關注的是 “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數據格式

對應的yolov8的數據格式就是yolo系列的標簽存儲形式

yolo系列對應的是[class x y w’ h’]。注意 class也就是label標簽, x y 就是(x, y)表示中心橫坐標與圖像寬度、高度的比值,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) / 2y_center = (y_min + y_max) / 2w = x_max - x_minh = y_max - y_minx_center /= image_widthy_center /= image_heightw /= image_widthh /= image_heightyolov8_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' # 輸出的目標文件存放路徑
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!")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206866.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206866.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206866.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

無公網IP環境如何SSH遠程連接Deepin操作系統

文章目錄 前言1. 開啟SSH服務2. Deppin安裝Cpolar3. 配置ssh公網地址4. 公網遠程SSH連接5. 固定連接SSH公網地址6. SSH固定地址連接測試 前言 Deepin操作系統是一個基于Debian的Linux操作系統,專注于使用者對日常辦公、學習、生活和娛樂的操作體驗的極致&#xff0…

數據儀表盤設計:可視化數據指標和報告

寫在開頭 在信息爆炸的時代,數據不再是簡單的數字和圖表,而是一種有機的信息體系。如何將這些琳瑯滿目的數據以一種直觀而高效的方式展示,成為企業決策者和分析師們共同關注的問題。本文將帶您深入學習如何設計和創建數據儀表盤,使數據指標和報告以一目了然的方式呈現。 …

Python---time庫

目錄 時間獲取 時間格式化 程序計時 time庫包含三類函數: 時間獲取:time() ctime() gmtime() 時間格式化:strtime() strptime() 程序計時:sleep() perf_counter() 下面逐一介紹&#…

H3.3K27M彌漫性中線膠質瘤的反義寡核苷酸治療

今天給同學們分享一篇實驗文章“Antisense oligonucleotide therapy for H3.3K27M diffuse midline glioma”,這篇文章發表在Sci Transl Med期刊上,影響因子為17.1。 結果解讀: CRISPR-Cas9消耗H3.3K27M恢復了H3K27三甲基化,并延…

Echarts地圖案例及常見問題

前言 ECharts 是一個使用 JavaScript 實現的開源可視化庫,它可以幫助用戶以簡單的方式創建復雜的時間序列、條形圖、餅圖、地圖等圖形。 Echarts繪制地圖的案例 展示了中國各省份的人口數量 var myChart = echarts.init(document.getElementById(main)); var option = {t…

【TailwindCSS】

TailwindCSS作為一種現代化的CSS框架,以其高度的定制性和靈活性受到前端開發者的青睞。本文旨在提供一份詳細的TailwindCSS使用教程,特別適用于Vite和Vue框架的組合。 我們將從安裝開始,深入探討如何在項目中有效利用TailwindCSS的各項功能&…

在AWS Lambda上部署標準FFmpeg工具——Docker方案

大綱 1 確定Lambda運行時環境1.1 Lambda系統、鏡像、內核版本1.2 運行時1.2.1 Python1.2.2 Java 2 啟動EC23 編寫調用FFmpeg的代碼4 生成docker鏡像4.1 安裝和啟動Docker服務4.2 編寫Dockerfile腳本4.3 生成鏡像 5 推送鏡像5.1 創建存儲庫5.2 給EC2賦予角色5.2.1 創建策略5.2.2…

【帶頭學C++】----- 九、類和對象 ---- 9.10 C++設計模式之單例模式設計

??????????????????????麻煩您點個關注,不迷路???????????????????????? 目 錄 9.10 C設計模式之單例模式設計 舉例說明: 9.10 C設計模式之單例模式設計 看過我之前的文章的,簡單講解過C/Q…

遙測終端機RTU:實現遠程監測和控制的重要工具

遙測終端機RTU對設備進行遠程監測和控制,支持采集和傳輸數據,以實現對工業過程、公用事業、水文和環境的監測和管理。 遙測終端機RTU工作原理 計訊物聯遙測終端機RTU通過網口、串口進行傳感器/設備等現場數據采集,將其轉換為數字信號&#xf…

【LeetCode】202. 快樂數

202. 快樂數 難度:簡單 題目 編寫一個算法來判斷一個數 n 是不是快樂數。 「快樂數」 定義為: 對于一個正整數,每一次將該數替換為它每個位置上的數字的平方和。然后重復這個過程直到這個數變為 1,也可能是 無限循環 但始終變…

高校網站建設的效果如何

高校有較高的信息承載需求、招生宣傳、學校內容呈現、內部消息觸達等需求,對高校來說,如今互聯網深入生活各個場景,無論學校發展、外部拓展還是內部師生互動、通知觸達等都需要完善。 除了傳統傳單及第三方平臺展示外,學校構建屬…

C#-數組池減少GC工作

數組池減少GC工作 通過ArrayPool類(名稱空間System.Buffers)使用數組池,可減少垃圾收集器的工作,ArrayPool管理一個數組池,數組可以從這租借,并返回池中,內存在ArrayPool中管理。 創建ArrayPool…

Html5響應式全開源網站建站源碼系統 附帶完整的搭建教程

Html5響應式全開源網站建站源碼系統是基于Html5、CSS3和JavaScript等技術開發的全開源網站建站系統。它旨在為初學者和小型企業提供一套快速、簡便的網站建設解決方案。該系統采用響應式設計,可以自適應不同設備的屏幕大小,提高用戶體驗。同時&#xff0…

Clean My Mac X2024解鎖完整版本

Clean My Mac X是Mac上一款美觀易用的系統優化清理工具,也是小編剛開始用Mac時的裝機必備。垃圾需要時時清,電腦才能常年新。Windows的垃圾清理工具選擇有很多,但是Mac的清理工具可選擇的就很少。 今天給大家推薦大名鼎鼎的Clean My Mac X&a…

elasticsearch-head 啟動教程

D:\elasticsearch-head-master>grunt server ‘grunt’ 不是內部或外部命令,也不是可運行的程序 或批處理文件。 npm install -g grunt-clinpm install

Leetcode—190.顛倒二進制位【簡單】

2023每日刷題&#xff08;五十二&#xff09; Leetcode—190.顛倒二進制位 算法思路 實現代碼 class Solution { public:uint32_t reverseBits(uint32_t n) {uint32_t res 0;for(int i 0; i < 32 && n > 0; i) {res | (n & 1) << (31 - i);n >&…

【華為數據之道學習筆記】1-1非數字原生企業的特點

非數字原生企業的數字化轉型挑戰 軟件和數據平臺為核心的數字世界入口&#xff0c;便捷地獲取和存儲了大量的數據&#xff0c;并開始嘗試通過機器學習等人工智能技術分析這些數據&#xff0c;以便更好地理解用戶需求&#xff0c;增強數字化創新能力。部分數字原生企業引領著云計…

第二十一章,網絡通信

網絡協議 IP協議 IP是Internet Protocol的簡稱&#xff0c;是一種網絡協議。Internet 網絡采用的協議是TCP/IP協議&#xff0c;其全稱是Transmission Control Protocol/Internet Protocol。Internet 依靠TCP/IP協議&#xff0c;在全球范圍內實現了不同硬件結構、不同操作系統…

淺談Android 14適配

引言 距離 Android 14 發布已經有一段時間了&#xff0c;趁著這次機會&#xff0c;了解和熟悉了 Android 14 更新的內容&#xff0c;現在來和大家分享一下&#xff0c;大家喜歡的話可以點個贊多多支持一下&#xff0c;文章的內容按照適配內容的重要程度進行排序。 targetSdk …

機器學習實戰:預測波士頓房價

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天來學習一下機器學習中一個非常經典的案例&#xff1a;預測波士頓房價&#xff0c;在此過程中也會補充很多重要的知識點&#xff0c;歡迎大家一起前來探討學習~ 一、導入數據 在這個項目中&#xff0c;我們利用馬薩諸…