女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【開發實例】基于BPI-CanMV-K230D-Zero開發板實現人體關鍵點的實時動態識別

電子發燒友論壇 ? 2025-07-08 08:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文介紹了香蕉派 CanMV K230D Zero 開發板通過攝像頭實現人體關鍵點的實時動態檢測識別的項目設計。

https://bbs.elecfans.com/jishu_2493481_1_1.html


項目介紹

  • 人體關鍵點檢測應用使用 YOLOv8n-pose 模型對人體姿態進行檢測;
  • 檢測結果得到 17 個人體骨骼關鍵點的位置,并用不同顏色的線將關鍵點連起來在屏幕顯示。

17 個人體骨骼關鍵點包括:鼻子、左眼、右眼、左耳、右耳、左肩、右肩、左肘、右肘、左腕、右手腕、左髖關節、右髖關節、左膝、右膝蓋、左腳踝、右腳踝。

模型官方文檔詳見:COCO8 Pose 數據集 -Ultralytics YOLO 文檔.

模型訓練過程詳見:訓練部署YOLOv8姿態估計模型 | Seeed Studio Wiki.


流程圖

285df6ce-5b8f-11f0-9cf1-92fbcf53809c.jpg

代碼

使用CanMV IDE打開\CanMV\sdcard\examples\05-AI-Demo\person_keypoint_detect.py文件

fromlibs.PipeLineimportPipeLine, ScopedTiming
fromlibs.AIBaseimportAIBase
fromlibs.AI2DimportAi2d
importos
importujson
frommedia.mediaimport*
fromtimeimport*
importnncase_runtimeasnn
importulab.numpyasnp
importtime
importutime
importimage
importrandom
importgc
importsys
importaidemo

# 自定義人體關鍵點檢測類
classPersonKeyPointApp(AIBase):
def__init__(self,kmodel_path,model_input_size,confidence_threshold=0.2,nms_threshold=0.5,rgb888p_size=[1280,720],display_size=[1920,1080],debug_mode=0):
super().__init__(kmodel_path,model_input_size,rgb888p_size,debug_mode)
self.kmodel_path=kmodel_path
# 模型輸入分辨率
self.model_input_size=model_input_size
# 置信度閾值設置
self.confidence_threshold=confidence_threshold
# nms閾值設置
self.nms_threshold=nms_threshold
# sensor給到AI的圖像分辨率
self.rgb888p_size=[ALIGN_UP(rgb888p_size[0],16),rgb888p_size[1]]
# 顯示分辨率
self.display_size=[ALIGN_UP(display_size[0],16),display_size[1]]
self.debug_mode=debug_mode
#骨骼信息
self.SKELETON = [(16,14),(14,12),(17,15),(15,13),(12,13),(6, 12),(7, 13),(6, 7),(6, 8),(7, 9),(8, 10),(9, 11),(2, 3),(1, 2),(1, 3),(2, 4),(3, 5),(4, 6),(5, 7)]
#肢體顏色
self.LIMB_COLORS = [(255,51, 153,255),(255,51, 153,255),(255,51, 153,255),(255,51, 153,255),(255,255,51, 255),(255,255,51, 255),(255,255,51, 255),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0)]
#關鍵點顏色,共17個
self.KPS_COLORS = [(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,0, 255,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,255,128,0),(255,51, 153,255),(255,51, 153,255),(255,51, 153,255),(255,51, 153,255),(255,51, 153,255),(255,51, 153,255)]

# Ai2d實例,用于實現模型預處理
self.ai2d=Ai2d(debug_mode)
# 設置Ai2d的輸入輸出格式和類型
self.ai2d.set_ai2d_dtype(nn.ai2d_format.NCHW_FMT,nn.ai2d_format.NCHW_FMT,np.uint8, np.uint8)

# 配置預處理操作,這里使用了pad和resize,Ai2d支持crop/shift/pad/resize/affine,具體代碼請打開/sdcard/app/libs/AI2D.py查看
defconfig_preprocess(self,input_image_size=None):
withScopedTiming("set preprocess config",self.debug_mode >0):
# 初始化ai2d預處理配置,默認為sensor給到AI的尺寸,您可以通過設置input_image_size自行修改輸入尺寸
ai2d_input_size=input_image_sizeifinput_image_sizeelseself.rgb888p_size
top,bottom,left,right=self.get_padding_param()
self.ai2d.pad([0,0,0,0,top,bottom,left,right],0, [0,0,0])
self.ai2d.resize(nn.interp_method.tf_bilinear, nn.interp_mode.half_pixel)
self.ai2d.build([1,3,ai2d_input_size[1],ai2d_input_size[0]],[1,3,self.model_input_size[1],self.model_input_size[0]])

# 自定義當前任務的后處理
defpostprocess(self,results):
withScopedTiming("postprocess",self.debug_mode >0):
# 這里使用了aidemo庫的person_kp_postprocess接口
results = aidemo.person_kp_postprocess(results[0],[self.rgb888p_size[1],self.rgb888p_size[0]],self.model_input_size,self.confidence_threshold,self.nms_threshold)
returnresults

#繪制結果,繪制人體關鍵點
defdraw_result(self,pl,res):
withScopedTiming("display_draw",self.debug_mode >0):
ifres[0]:
pl.osd_img.clear()
kpses = res[1]
foriinrange(len(res[0])):
forkinrange(17+2):
if(k 17):
kps_x,kps_y,kps_s =round(kpses[i][k][0]),round(kpses[i][k][1]),kpses[i][k][2]
kps_x1 =int(float(kps_x) * self.display_size[0] // self.rgb888p_size[0])
kps_y1 =int(float(kps_y) * self.display_size[1] // self.rgb888p_size[1])
if(kps_s >0):
pl.osd_img.draw_circle(kps_x1,kps_y1,5,self.KPS_COLORS[k],4)
ske = self.SKELETON[k]
pos1_x,pos1_y=round(kpses[i][ske[0]-1][0]),round(kpses[i][ske[0]-1][1])
pos1_x_ =int(float(pos1_x) * self.display_size[0] // self.rgb888p_size[0])
pos1_y_ =int(float(pos1_y) * self.display_size[1] // self.rgb888p_size[1])

pos2_x,pos2_y =round(kpses[i][(ske[1] -1)][0]),round(kpses[i][(ske[1] -1)][1])
pos2_x_ =int(float(pos2_x) * self.display_size[0] // self.rgb888p_size[0])
pos2_y_ =int(float(pos2_y) * self.display_size[1] // self.rgb888p_size[1])

pos1_s,pos2_s = kpses[i][(ske[0] -1)][2],kpses[i][(ske[1] -1)][2]
if(pos1_s >0.0andpos2_s >0.0):
pl.osd_img.draw_line(pos1_x_,pos1_y_,pos2_x_,pos2_y_,self.LIMB_COLORS[k],4)
gc.collect()
else:
pl.osd_img.clear()

# 計算padding參數
defget_padding_param(self):
dst_w = self.model_input_size[0]
dst_h = self.model_input_size[1]
input_width = self.rgb888p_size[0]
input_high = self.rgb888p_size[1]
ratio_w = dst_w / input_width
ratio_h = dst_h / input_high
ifratio_w < ratio_h:
ratio = ratio_w
else:
ratio = ratio_h
new_w = (int)(ratio * input_width)
new_h = (int)(ratio * input_high)
dw = (dst_w - new_w) /2
dh = (dst_h - new_h) /2
top =int(round(dh -0.1))
bottom =int(round(dh +0.1))
left =int(round(dw -0.1))
right =int(round(dw -0.1))
return top, bottom, left, right

if__name__=="__main__":
# 顯示模式,默認"hdmi",可以選擇"hdmi"和"lcd"
display_mode="hdmi"
# k230保持不變,k230d可調整為[640,360]
rgb888p_size = [1920,1080]

ifdisplay_mode=="hdmi":
display_size=[1920,1080]
else:
display_size=[800,480]
# 模型路徑
kmodel_path="/sdcard/examples/kmodel/yolov8n-pose.kmodel"
# 其它參數設置
confidence_threshold =0.2
nms_threshold =0.5
# 初始化PipeLine
pl=PipeLine(rgb888p_size=rgb888p_size,display_size=display_size,display_mode=display_mode)
pl.create()
# 初始化自定義人體關鍵點檢測實例
person_kp=PersonKeyPointApp(kmodel_path,model_input_size=[320,320],confidence_threshold=confidence_threshold,nms_threshold=nms_threshold,rgb888p_size=rgb888p_size,display_size=display_size,debug_mode=0)
person_kp.config_preprocess()
whileTrue:
withScopedTiming("total",1):
# 獲取當前幀數據
img=pl.get_frame()
# 推理當前幀
res=person_kp.run(img)
# 繪制結果到PipeLine的osd圖像
person_kp.draw_result(pl,res)
# 顯示當前的繪制結果
pl.show_image()
gc.collect()
person_kp.deinit()
pl.destroy()

連接開發板并運行代碼;


將攝像頭對準目標檢測畫面,即可在 IDE 獲取實時識別效果。

286afd38-5b8f-11f0-9cf1-92fbcf53809c.jpg

效果

運動場景

2880b0ec-5b8f-11f0-9cf1-92fbcf53809c.jpg

科幻電影

289264c2-5b8f-11f0-9cf1-92fbcf53809c.jpg

動作電影

28aa4560-5b8f-11f0-9cf1-92fbcf53809c.jpg

動態識別效果詳見頂部和底部視頻


總結


本文介紹了香蕉派 CanMV K230D Zero 開發板通過攝像頭實現人體關鍵點的實時動態檢測和識別的項目設計,為相關產品的快速開發和產品設計提供了參考。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 攝像頭
    +關注

    關注

    61

    文章

    4970

    瀏覽量

    98214
  • 開發板
    +關注

    關注

    25

    文章

    5656

    瀏覽量

    104255
  • 動態識別模塊

    關注

    0

    文章

    2

    瀏覽量

    869
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    香蕉派 BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片設計

    資源和小巧的尺寸使其成為市場上最具競爭力的開發板之一。無論是編程學習、邊緣 AI 音視頻產品創新,還是性能評估,Canmv K230D Zero 都助您開啟創新之旅。
    發表于 07-30 17:43

    香蕉派開發板BPI-CanMV-K230D-Zero 嘉楠科技 RISC-V開發板開發

    Banana Pi BPI-CanMV-K230D-Zero開發售[]() Banana Pi 與 嘉楠科技繼K210官方合作后,推出的最新的K230D的開源硬件產品。雙方將緊密合
    發表于 11-05 15:29

    Banana Pi BPI-CanMV-K230D-Zero :AIoT 應用的 Kendryte K230D RISC-V

    Banana Pi BPI-CanMV-K230D-Zero 是一款緊湊型低功耗單板計算機,基于 Kendryte K230D 雙核 XuanTie C908 RISC-V 芯片構建,集成第三代知識
    發表于 12-05 09:19

    BPI-CanMV-K230D-Zero開發板體驗】香蕉派 K230D 視覺開發板開箱+CamMV 環境搭建

    【開箱】 今天收到了香蕉派 Banana Pi BPI-CanMV-K230D-Zero 開發板,先上圖一睹為快。 【處理器介紹】 這款開發板搭載嘉楠科技 K230D 處理器,
    發表于 06-24 22:54

    BPI-CanMV-K230D-Zero開發板體驗】介紹、系統安裝、工程測試

    BPI-CanMV-K230D-Zero開發板體驗】介紹、系統安裝、工程測試 本文介紹了香蕉派 CanMV K230D Zero
    發表于 06-25 20:15

    BPI-CanMV-K230D-Zero開發板體驗】+初品嘉楠科技產品

    感謝組織者能提供這樣好的活動,使大家能切身地感受到嘉楠科技的產品,在2款提供的產品中所達到的是Banana Pi BPI-CanMV-K230D-Zero,它采用K230D RISC-V芯片設計,該
    發表于 06-26 08:55

    BPI-CanMV-K230D-Zero開發板體驗】01_開箱+環境配置+系統燒錄

    1 開發板簡介 今天收到了發燒友論壇寄來的試用產品--BPI-CanMV-K230D-Zero17,這塊開發板是采用嘉楠科技 K230D RISC-V芯片設計,探索 RISC-V Ve
    發表于 06-26 19:07

    BPI-CanMV-K230D-Zero開發板體驗】+燈效控制與Python編程

    BPI-CanMV-K230D-Zero開發板易于開發的一大特定在于它系統內置了Python,因此不在僅依賴于在LINUX下開發。此外,隨著AI智能技術的推進,Python的使用也越來
    發表于 06-27 17:33

    BPI-CanMV-K230D-Zero開發板體驗】人體關鍵點檢測

    BPI-CanMV-K230D-Zero開發板體驗】人體關鍵點檢測 本文介紹了香蕉派 CanMV K2
    發表于 06-28 13:18

    BPI-CanMV-K230D-Zero開發板體驗】+ADC數據采集及尋找引腳的問題

    在通常情況下。A/D數據采集功能基本上是標準功能之一,在BPI-CanMV-K230D-Zero上自然也基本這樣的功能并提供了相應的示例以供學習和借鑒。 示例的程序比較簡單,就是對通道0的信號進行
    發表于 06-29 17:04

    BPI-CanMV-K230D-Zero開發板體驗】+串口通訊及應用

    BPI-CanMV-K230D-Zero開發板上配有相應的串口資源,通過它們不但可以實現設備的數據交流,還可控制相應的串口設備實現特點的功能。 在
    發表于 06-30 12:43

    BPI-CanMV-K230D-Zero開發板體驗】+TFT屏顯示驅動及信息顯示

    對于BPI-CanMV-K230D-Zero開發板來講,其標準的顯示器配置是基于芯片ST7701的LCD顯示屏,該顯示屏的顯示分辨率為800x480像素,可在智能設備時實現攝像內容的
    發表于 07-02 11:03

    Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片設計

    Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片設計,探索 RISC-V Vector1.0 的前沿技術,選擇嘉楠科技的 Canmv
    的頭像 發表于 07-30 17:41 ?1067次閱讀
    Banana Pi <b class='flag-5'>BPI-CanMV-K230D-Zero</b> 采用嘉楠科技 <b class='flag-5'>K230D</b> RISC-V芯片設計

    香蕉派開發板BPI-CanMV-K230D-Zero 嘉楠科技 RISC-V開發板開發

    Banana Pi 與 嘉楠科技繼K210官方合作后,推出的最新的K230D的開源硬件產品。雙方將緊密合作,共推開源生態。Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠
    的頭像 發表于 11-05 15:27 ?1415次閱讀
    香蕉派<b class='flag-5'>開發板</b><b class='flag-5'>BPI-CanMV-K230D-Zero</b> 嘉楠科技 RISC-V<b class='flag-5'>開發板</b>公<b class='flag-5'>開發</b>售

    搭載雙核玄鐵C908 ?RISC-V CPU,BPI-CanMV-K230D-Zero開發板試用

    Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片設計,探索 RISC-V ?Vector1.0 的前沿技術,選擇嘉楠科技的 Canmv
    的頭像 發表于 06-05 16:49 ?482次閱讀
    搭載雙核玄鐵C908 ?RISC-V CPU,<b class='flag-5'>BPI-CanMV-K230D-Zero</b><b class='flag-5'>開發板</b>試用
    主站蜘蛛池模板: 沁源县| 彭州市| 元谋县| 昌都县| 漳州市| 武鸣县| 砚山县| 颍上县| 岱山县| 澳门| 邮箱| 历史| 高阳县| 错那县| 昭平县| 通州区| 绥棱县| 仙桃市| 西乌| 山东省| 鄱阳县| 莒南县| 通江县| 通化县| 奉新县| 朔州市| 吴桥县| 雅安市| 都江堰市| 广州市| 遂宁市| 甘洛县| 巨野县| 五大连池市| 尚志市| 洛隆县| 德江县| 铜鼓县| 马鞍山市| 泉州市| 静海县|