在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

【AWTK使用經驗】如何播放視頻或攝像頭畫面

ZLG致遠電子 ? 2024-07-04 08:25 ? 次閱讀

AWTK是基于C語言開發的跨平臺GUI框架?!禔WTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設計自定義進度條?這些都會在系列文章進行解答。

假設目前想在ZTP800示教器的AWTK程序中實現播放視頻或者播放攝像頭畫面的效果,可以借助AWTK的mutable_image控件或usb_camera控件來顯示畫面。下圖則是ZTP800示教器使用usb_camera控件Demo顯示攝像頭畫面的效果圖:
e78bbb6a-399b-11ef-a655-92fbcf53809c.png圖1ZTP800示教器顯示攝像頭畫面效果圖

usb_camera控件和mutable_image控件的對比

關于文章開頭提到的兩個控件對比如下:

1. mutable_image控件

mutable_image控件可以顯示視頻畫面,也可以顯示攝像頭等外接設備畫面。適用性比較廣泛,但使用起來相對繁瑣一些。它本身是不負責解析視頻或攝像頭設備畫面數據的,用戶可以通過第三方庫解析并獲取畫面原始RGB數據,將數據拷貝到mutable_image控件特定回調函數里面即可顯示畫面。

2. usb_camera控件

usb_camera控件本質上是對mutable_image控件的封裝,專門用于顯示攝像頭畫面。在控件內部實現了獲取并解析攝像頭畫面數據的代碼,用戶只需調用特定的API即可顯示攝像頭畫面,而不用手動拷貝原始RGB數據。與mutable_image相比沒那么廣,但是使用起來相對方便。

使用usb_camera控件顯示攝像頭畫面

使用usb_camera控件顯示攝像頭畫面的流程比較簡單:在AWStudio插件列表可以安裝該插件,之后在自己的AWTK應用放置一個usb_camera控件和一個按鈕控件,設置usb_camera控件的攝像頭設備、大小等屬性,并且給該按鈕注冊點擊事件用于打開攝像頭。e7b0fbfa-399b-11ef-a655-92fbcf53809c.png圖2使用usb_camera控件頁面布局示例

按鈕點擊事件回調函數可以參考以下代碼示例:

static ret_t on_button_click(void* ctx, event_t* e) { ret_t ret = RET_OK; widget_t* win = WIDGET(ctx); widget_t* camera = widget_lookup(win, "usb_camera", TRUE);
if(usb_camera_is_open(camera) && usb_camera_is_play(camera)) { usb_camera_stop(camera); usb_camera_close(camera); } else { ret = usb_camera_open(camera); if (ret != RET_OK) { dialog_toast("open camera fail", 3000); return ret; } return usb_camera_play(camera); } return RET_OK;}


使用mutable_image控件顯示視頻或攝像頭畫面

mutable_image控件主要提供了 mutable_image_set_prepare_image 函數注冊一個回調函數,該回調函數在每次繪制之前被調用,用于準備下一幀要顯示的圖片。
由于mutable_image控件本身不帶有獲取視頻或攝像頭畫面的功能,因此獲取畫面數據的操作可以借助第三方庫(如:OpenCV)來實現。mutable_image為了以最高性能繪制,會采取和當前LCD相同的位圖數據格式(調用lcd_get_desired_bitmap_format 獲?。?strong>。因此為了兼容不同LCD格式,可以在回調函數中寫好不同格式的拷貝像素邏輯。

下面則是利用OpenCV接口獲取攝像頭數據并顯示到mutable_image控件的部分代碼示例:

static cv::Mat cv_image;static cv::VideoCapture cv_capture;
/* mutable_image_set_prepare_image回調函數 */ret_t mutable_image_prepare_image(void* ctx, bitmap_t* image) { uint8_t* image_buff = NULL; uint32_t bpp = bitmap_get_bpp(image); widget_t* widget = WIDGET(ctx); bitmap_format_t format = (bitmap_format_t)image->format; cv_capture >> cv_image; image_buff = bitmap_lock_buffer_for_write(image); for (int h = 0; h < image->h; ++h) { uint8_t* p_buff = image_buff + image->w * h * bpp; for (int w = 0; w < image->w; ++w) { /* 調用OpenCV接口獲取攝像頭當前幀的原始RGB數據 */ cv::Vec3b val = cv_image.at(h, w); if (format == BITMAP_FMT_RGB888 || format == BITMAP_FMT_RGBA8888) { /* RGB888或 RGBA8888示例, 由于該示例上面cv::at數據的格式為BGR,需要進行轉換, 具體是否需要轉換根據實際格式而決定 */ uint8_t blue = val[0]; uint8_t green = val[1]; uint8_t red = val[2]; p_buff[0] = red; p_buff[1] = green; p_buff[2] = blue; if (format == BITMAP_FMT_RGBA8888) { p_buff[3] = 255; } p_buff += bpp;
} else if (format == BITMAP_FMT_BGR888 || format == BITMAP_FMT_BGRA8888) { ... } else if (format == BITMAP_FMT_BGR565) { } else if (format == BITMAP_FMT_RGB565) { ... } } }
return bitmap_unlock_buffer(image);}
ret_t camera_open(widget_t* win) { widget_t* mutable_image = widget_child(win, "mutable_image");
cv_capture.open(0); mutable_image_set_prepare_image(mutable_image,mutable_image_prepare_image, mutable_image); return RET_OK;}

上面代碼通過設置mutable_image控件的回調函數,在回調函數里面使用OpenCV的API獲取到攝像頭原始RGB數據,最后將數據寫到mutable_image控件畫面緩沖區上。

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

    關注

    6

    文章

    1956

    瀏覽量

    73140
  • 攝像頭
    +關注

    關注

    60

    文章

    4862

    瀏覽量

    96307
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137714
  • awtk
    +關注

    關注

    0

    文章

    46

    瀏覽量

    252
收藏 人收藏

    評論

    相關推薦

    AWTK使用經驗】如何更換AWTK SDK與渲染模式

    AWTK是基于C語言開發的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何播放
    的頭像 發表于 08-01 08:25 ?1158次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    android多攝像頭同時預覽

    程序可以打開,預覽畫面還算流暢,大概25幀左右。調試USB攝像頭通過UVC生成了video節點,接著移植了camera的HAL層庫文件,可以順利打開。當要調用第二個USB攝像頭的時候就會遇到一些麻煩
    發表于 01-18 14:55

    怎么在在無人機上加攝像頭,將拍攝畫面實時傳回,在電腦屏幕播放

    在無人機上加攝像頭,將拍攝畫面實時傳回,在電腦屏幕播放推薦課程:張飛四旋翼飛行器視頻套件,76小時吃透四軸算法http://t.elecfans.com/topic/40.html?e
    發表于 10-30 19:27

    關于網絡攝像頭本地化的方法

    協議。所以用ONVIF Device Manager來查看局域網中的攝像頭如圖左邊能看到攝像頭IP。右下角能查看到RTSP視頻流鏈接。復制這個鏈接接著打開VCam,選擇流媒體在地址欄粘貼上面復制的rtsp鏈接[img=110,0
    發表于 05-30 09:21

    OV7670攝像頭模塊是如何實現攝像頭畫面上傳到onenet的

    OV7670攝像頭模塊是如何實現攝像頭畫面上傳到onenet的?
    發表于 09-30 08:53

    OKMX6Q_C外接ov5640攝像頭視頻畫面會閃爍是什么原因呢

    我用OKMX6Q_C外接一個ov5640攝像頭,使用forlinux qt5 ov5640應用打開預覽時,發現如果在攝像頭上快速度移動時(如手),視頻畫面會閃爍,像有一條切線一樣。不知
    發表于 01-10 06:47

    使用Arduino和網絡攝像頭的基本視頻流?

    我知道很多人說 arduino 不是處理視頻的最佳方式,但我在使用 OctoPi(基于 arduino 的 3D 打印平臺,還具有網絡攝像頭流)方面經驗豐富,所以我知道它能夠做我想做的事情想。 我
    發表于 05-04 06:51

    mp4文件偽裝攝像頭畫面

    電子小白,在網上苦苦尋求方案,請各位路過大俠指點: 主管交代,要弄一個Android設備。 能夠用 mp4 視頻文件偽裝成攝像頭畫面,然后循環播放。 不知道能不能實現呢,請大家提供下思
    發表于 05-10 18:37

    基于DirectShow的多攝像頭視頻采集

    1.為什么使用DirectShow 筆者使用的是兩個USB攝像頭,單攝像頭視頻采集使用OpenCV的VideoCapture類沒有問題,但是雙攝像頭就有問題,一個正常,另外一個采集不到
    發表于 02-08 03:24 ?3348次閱讀

    使用Python OpenCV讀取攝像頭視頻文件并播放顯示的詳細說明

    要從攝像頭視頻文件讀取視頻,首先導入opencv 庫cv2. 使用cv2.VideoCapture() 方法創建一個VideoCapture 對象。該方法接收
    發表于 01-19 16:57 ?5次下載

    特斯拉車內攝像頭視頻畫面曝光

    近日,有外媒爆料消息稱:國外圈內某位知名的大神留露放出了幾段關于特斯拉model 3汽車內的攝像頭拍攝畫面高清視頻,視頻透露了特斯拉model 3汽車車內的后視鏡疑似遮擋部分了
    的頭像 發表于 04-07 09:20 ?3203次閱讀

    如何選擇視頻會議攝像頭

    企業通信系統具有多元化的特點。在視頻會議系統的采購中,必須以需求為主,視頻會議攝像頭也是如此。必須根據視頻會議場地的大小進行選擇,不同的是數碼變焦
    發表于 04-26 10:57 ?2151次閱讀

    27系列DGUS智能屏發布:可實時播放高清模擬信號攝像頭視頻

    針對高清晰度的模擬信號攝像頭視頻畫面的顯示需求,迪文特推出27系列DGUS智能屏。該系列智能屏可適配常見的AHD攝像頭、CVBS攝像頭,支持
    的頭像 發表于 12-14 08:13 ?587次閱讀
    27系列DGUS智能屏發布:可實時<b class='flag-5'>播放</b>高清模擬信號<b class='flag-5'>攝像頭</b><b class='flag-5'>視頻</b>

    高清網絡攝像頭多媒體智能屏

    迪文全新推出的28系列智能屏,是面向屏幕實時顯示高清網絡攝像頭視頻畫面應用的產品。該系列智能屏可通過以太網WiFi連接攝像頭,可接收H.2
    的頭像 發表于 02-19 13:21 ?652次閱讀
    高清網絡<b class='flag-5'>攝像頭</b>多媒體智能屏

    AWTK使用經驗】如何在AWTK顯示阿拉伯文本

    AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何播放
    的頭像 發表于 09-12 08:07 ?411次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何在<b class='flag-5'>AWTK</b>顯示阿拉伯文本
    主站蜘蛛池模板: 正在播放国产乱子伦视频 | 永久免费mv网站入口 | 天天摸天天澡天天碰天天弄 | 久久老色鬼天天综合网观看 | 午夜观看 | 日本最顶级丰满的aⅴ艳星 日本最好的免费影院 | 丁香六月色婷婷综合网 | 国产激爽大片在线播放 | 欧美成人免费夜夜黄啪啪 | 久久狠狠色噜噜狠狠狠狠97 | 国产综合精品久久亚洲 | 5151四虎永久在线精品免费 | 91网站网站网站在线 | 成年黄网站免费大全毛片 | 日韩va亚洲va欧美va浪潮 | 国外免费一级 | 午夜国产在线观看 | 在线欧美色 | 久久综合久久久久 | 日韩免费视频一区二区 | 天天舔天天爽 | 色老头成人免费综合视频 | 调教双性学霸美人 | 日本黄段视频 | 久草婷婷| 最近在线观看免费完整视频 | 国产网站黄 | 天天做.天天爱.天天综合网 | 新四虎影院 | 无毒不卡在线观看 | 欧美一级三级在线观看 | 乱小说录目伦800 | 国模私拍视频在线观看 | 狠狠色丁香婷婷综合视频 | 女人张开腿男人猛桶视频 | 黄色美女网址 | 亚洲国产成人精品久久 | 天天操天天操天天操天天操 | 狼色视频在线观免费观看 | 超级乱淫伦网站 | 四虎最新网址入口 |