python+halcon 解讀labelme標注生成marksimage

這一段代碼封裝了一個類,需要傳統一個圖片和標注后json文件所在的地址,標注的選項是polygon,主要是用于unet深度學習網絡
在初始化時需要輸入文件(image+jeson)路徑,多分類任務的label_list。會在項目目錄下生成一個test_images文件夾,和marks_folder的文件夾
marks_image的制作使用halcon完成的,方便后期自己項目使用。歡迎交流
import os
import numpy as np
import halcon as haimport json
import shutilfrom qtconsole.mainwindow import background###邏輯是這樣的
# 初始化時 輸入 labelme標注的文件夾目錄,和 類別列表
# 在項目目錄下生成兩個文件夾,一個是test_images, 一個是對應的marks_folder也就是標簽圖片
class gen_marks_image():def __init__(self,path,label_list):   #初始化時,需傳入文件的路徑self.path = pathself.label_list = label_listdef get_list_in_path(self):name_files = os.listdir(self.path)json_files = []for name in name_files:if name.endswith('.json'):json_files.append(os.path.join(self.path, name))return json_filesdef create_folder(self,json_files):image_folders = "test_images"marks_folder = "marks_folder"if not os.path.exists(image_folders):os.mkdir(marks_folder)if not os.path.exists(marks_folder):os.mkdir(marks_folder)for json_1 in json_files:json_name=os.path.split(json_1)[-1]image_path = os.path.join(self.path, json_name.replace('.json','.jpg'))shutil.copy(image_path, image_folders)   #完成了對itest_image向test_images文件夾的復制###根據原圖生成以0填充的灰度圖image00=ha.read_image(image_path)width,height =ha.get_image_size(image00)image_marks0 = ha.gen_image_const("byte",int(width[0]),int(height[0]))###開始繪制marks_image圖with open(json_1,"r") as f:json_data = json.load(f)print(json_data["shapes"])for shape in json_data["shapes"]:label0 =shape["label"]####在這里我們輸入一個label的list列表,如果是多分類的話,通過label在label_list中的位置定義它的灰度值gray =self.label_list.index(label0)  #car對應1,dog對應2 作為他們的灰度值####在這里開始繪制區域points = shape["points"]row_points=[]col_points=[]for point in points:#這里注意lableme的x——對halcon的columnrow_points.append(int(point[1]))col_points.append(int(point[0]))print(row_points,col_points)#在這里要注意,polygon的首尾要接上。row_points.append(row_points[0])col_points.append(col_points[0])region = ha.gen_region_polygon(row_points,col_points)print(gray)image_marks0 = ha.paint_region(region,image_marks0,gray,'fill')ha.write_image(image_marks0,'jpg',0,marks_folder+"/"+json_name.replace('.json','.jpg'))def forward(self):json_files = self.get_list_in_path()print(json_files)self.create_folder(json_files)#使用過程其實很簡單
if __name__ == '__main__':path = r'C:\Users\Administrator\Desktop\test_image'label_list = ['back', 'car', 'dog', 'cat']gen_marks_image(path,label_list).forward()

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

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

相關文章

從技術債務到架構升級,滴滴國際化外賣的變革

背 景 商家營銷簡述 在外賣平臺的運營中,我們致力于通過靈活的補貼策略激勵商家,與商家共同打造良好的合作關系,也會提供多樣化的營銷活動,幫助商家吸引更多用戶下單。通過這些活動,不僅能夠提高商家的銷量&#xff0c…

英語—四級CET4考試—技巧篇—選詞填空—實操教學—2014 年 6 月大學英語四級考試真題(第 2 套)

🏠個人主頁:fo安方的博客? 💂個人簡歷:大家好,我是fo安方,目前中南大學MBA在讀,也考取過HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等證書。🐳 &…

線性代數中的正交和標準正交向量

在線性代數中,理解正交向量和正交向量至關重要,尤其是對于機器學習中的應用。這篇博文將簡化這些概念,而不會太深入地深入研究復雜的數學。 正交向量 如果兩個向量的點積等于零,則認為這兩個向量是正交的。但點積到底是什么呢&am…

企業文件共享中的權限管理與安全風險防范

在企業的日常運營中,文件共享是必不可少的一項工作。然而,文件共享過程中如果權限管理不當,極易引發安全風險,導致企業敏感信息泄露。因此,加強文件共享中的權限管理與安全風險防范,對于保障企業信息安全至…

急停信號的含義

前言: 大家好,我是上位機馬工,碩士畢業4年年入40萬,目前在一家自動化公司擔任軟件經理,從事C#上位機軟件開發8年以上!我們在開發C#的運動控制程序的時候,一個必要的步驟就是確認設備按鈕的急停…

數據結構:圖;鄰接矩陣和鄰接表

鄰接矩陣: 1.概念: 鄰接矩陣是圖的存儲結構之一,通過二維數組表示頂點間的連接關系。 2.具體例子 : 一.無向圖鄰接矩陣示例: 示例圖(頂點:A、B、C,邊:A-B、B-C&…

Kubernetes-master 組件

以下是Kubernetes Master Machine的組件。 etcd 它存儲集群中每個節點可以使用的配置信息。它是一個高可用性鍵值存儲,可以在多個節點之間分布。只有Kubernetes API服務器可以訪問它,因為它可能具有一些敏感信息。這是一個分布式鍵值存儲,所…

【第2章:神經網絡基礎與實現——2.1 前饋神經網絡的結構與工作原理】

老鐵們好!今天我們要來一場長達兩萬字的超詳細技術探險,我會像拆解樂高積木一樣把前饋神經網絡(Feedforward Neural Network)的每個零件擺在臺面上,用最接地氣的方式讓你徹底搞懂這個深度學習基石的工作原理。準備好了嗎?我們開始吧! 第一章:神經網絡的 “樂高積木” 1…

【云安全】云原生- K8S kubeconfig 文件泄露

什么是 kubeconfig 文件? kubeconfig 文件是 Kubernetes 的配置文件,用于存儲集群的訪問憑證、API Server 的地址和認證信息,允許用戶和 kubectl 等工具與 Kubernetes 集群進行交互。它通常包含多個集群的配置,支持通過上下文&am…

【環境安裝】重裝Docker-26.0.2版本

【機器背景說明】Linux-Centos7;已有低版本的Docker 【目標環境說明】 卸載已有Docker,用docker-26.0.2.tgz安裝包安裝 1.Docker包下載 下載地址:Index of linux/static/stable/x86_64/ 2.卸載已有的Docker 卸載之前首先停掉服務 sudo…

字節跳動后端二面

📍1. 數據庫的事務性質,InnoDB是如何實現的? 數據庫事務具有ACID特性,即原子性、一致性、隔離性和持久性。InnoDB通過以下機制實現這些特性: 🚀 實現細節: 原子性:通過undo log實…

SpringBoot中使用MyBatis-Plus詳細介紹

目錄 一、MyBatis-Plus的使用步驟 1.引入MybatisPlus的起步依賴 2.定義Mapper(也叫dao)層的接口 3.MyBatis-Plus中常用注解 4. 使用MyBatis-Plus時要做如下配置 5.條件構造器 Wrapper 一、MyBatis-Plus的使用步驟 1.引入MybatisPlus的起步依賴 M…

vue3讀取webrtc-stream 視頻流

一.首先下載webrtc-stream&#xff0c;方便自己本地搭建視頻流服務 https://download.csdn.net/download/cyw8998/90373521 解壓后&#xff0c;啟動命令 webrtc-streamer.exe -H 127.0.0.1:8020 二.vue3代碼如下 <template><h1>video</h1><video id&…

vue3搭建實戰項目筆記二

vue3搭建實戰項目筆記二 2.1.git管理項目2.2.隱藏tabBar欄2.2.1 方案一&#xff1a;在路由元信息中設置一個參數是否顯示tabBar2.2.2 方案二&#xff1a;通過全局設置相對定位樣式 2.3.項目里封裝axios2.3.1 發送網絡請求的兩種做法2.3.2 封裝axios并發送網絡請求2.3.2.1 對axi…

USC 安防平臺之移動偵測

隨著第四次科技革命的開啟&#xff0c;AI技術獲取了突飛猛進的發展&#xff0c;視頻監控對應的視頻分析技術也獲取了巨大的發展。 還記得15年前采用人工提取特征做前景背景分離和提取&#xff0c;大部分依賴CPU&#xff0c;最多使用一下TI的DM642 DSP加速&#xff0c;開發難度…

Unity CommandBuffer繪制粒子系統網格顯示

CommandBuffer是 Unity 提供的一種在渲染流程中插入自定義渲染命令的機制。在渲染粒子系統時&#xff0c;常規的渲染流程可能無法滿足特定的渲染需求&#xff0c;而CommandBuffer允許開發者靈活地設置渲染參數、控制渲染順序以及執行自定義的繪制操作。通過它&#xff0c;可以精…

【天地圖】繪制、刪除點線面

使用天地圖繪制、刪除點線面 實現效果圖地圖組件完整代碼使用地圖組件完整代碼 實現效果圖 地圖組件完整代碼 // 天地圖組件 <template><div class"map-container"><div id"mapCon"></div></div> </template><scri…

Java八股文詳細文檔.2(基于黑馬、ChatGPT、DeepSeek)

通過B站黑馬程序員的八股文教學&#xff0c;自己也二刷了&#xff0c;結合ChatGpt、deepSeek總結了一下,Java八股文詳細文檔.2&#xff08;Redis篇和消息中間件篇&#xff0c;還沒有寫完&#xff0c;這只是一部分&#xff09; Java八股文詳細文檔.1&#xff08;包含JVM篇、數據…

簡述 tsconfig.json 中 rootDir 和 include 之間的關系

tsconfig.json 中的 rootDir 和 include 之間有一定的關系&#xff0c;但它們的作用是不同的。理解它們的關系可以幫助你更好地配置 TypeScript 項目。 1. rootDir 的作用 rootDir 用于指定 TypeScript 編譯器&#xff08;tsc&#xff09;的“根目錄”。它的主要作用是&#x…

如何在Spring Boot中使用Profiles實現環境隔離

文章目錄 如何在Spring Boot中使用Profiles實現環境隔離什么是Spring Profiles1.基本概念2.配置管理3.使用場景4.條件化配置5.優點Spring Profiles的基礎知識1.Profile的定義2.配置文件3.激活Profiles4.條件化配置5.Profile的優先級與合并6.Profiles的最佳實踐配置文件的組織1.…