速讀:JavaCV的攝像頭實戰(zhàn)之十二:性別檢測
(相關資料圖)
歡迎訪問我的GitHub本篇概覽這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos
本文是《JavaCV的攝像頭實戰(zhàn)》系列的第十二篇,咱們來開發(fā)一個實用功能:識別性別并顯示在預覽頁面,如下圖:
今天的代碼,主要功能如下圖所示:
如果您看過《JavaCV的攝像頭實戰(zhàn)》系列的其他文章,就會發(fā)現(xiàn)上圖中只有藍色部分是新增內容,其余的步驟都是固定套路,《JavaCV的攝像頭實戰(zhàn)》系列的每一個應用玩的都是相同套路:別看步驟挺多,其實都是同一個流程
關于性別和年齡檢測使用卷積神經網絡推理性別和年齡的更多技術細節(jié),這里有更詳細的說明:https://talhassner.github.io/home/publication/2015_CVPR本篇會使用已訓練好的Caffe 模型,訓練該模型的數(shù)據來自Flickr相冊,通過從 iPhone5(或更高版本)智能手機設備自動上傳組裝而成,并由其作者根據知識共享 (CC) 許可向公眾發(fā)布,共有26580張照片,涉及2284人,這些人的年齡一共被標識成八組:(0-2、4-6、8-13、15-20、25-32、38-43、48-53、60 -)關于數(shù)據源的更多詳細,請參考:https://talhassner.github.io/home/projects/Adience/Adience-data.html論文地址:https://talhassner.github.io/home/projects/cnn_agegender/CVPR2015_CNN_AgeGenderEstimation.pdf源碼下載《JavaCV人臉識別三部曲》的完整源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos):名稱 | 鏈接 | 備注 |
---|---|---|
項目主頁 | https://github.com/zq2599/blog_demos | 該項目在GitHub上的主頁 |
git倉庫地址(https) | https://github.com/zq2599/blog_demos.git | 該項目源碼的倉庫地址,https協(xié)議 |
git倉庫地址(ssh) | git@github.com:zq2599/blog_demos.git | 該項目源碼的倉庫地址,ssh協(xié)議 |
protected CanvasFrame previewCanvas
把前面創(chuàng)建的DetectService作為成員變量,后面檢測的時候會用到:/** * 檢測工具接口 */ private DetectService detectService;
PreviewCameraWithGenderAge的構造方法,接受DetectService的實例:/** * 不同的檢測工具,可以通過構造方法傳入 * @param detectService */ public PreviewCameraWithGenderAge(DetectService detectService) { this.detectService = detectService; }
然后是初始化操作,可見是previewCanvas的實例化和參數(shù)設置,還有檢測、識別的初始化操作:@Override protected void initOutput() throws Exception { previewCanvas = new CanvasFrame("攝像頭預覽", CanvasFrame.getDefaultGamma() / grabber.getGamma()); previewCanvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); previewCanvas.setAlwaysOnTop(true); // 檢測服務的初始化操作 detectService.init(); }
接下來是output方法,定義了拿到每一幀視頻數(shù)據后做什么事情,這里調用了detectService.convert檢測人臉并識別性別,然后在本地窗口顯示:@Override protected void output(Frame frame) { // 原始幀先交給檢測服務處理,這個處理包括物體檢測,再將檢測結果標注在原始圖片上, // 然后轉換為幀返回 Frame detectedFrame = detectService.convert(frame); // 預覽窗口上顯示的幀是標注了檢測結果的幀 previewCanvas.showImage(detectedFrame); }
最后是處理視頻的循環(huán)結束后,程序退出前要做的事情,先關閉本地窗口,再釋放檢測服務的資源:@Override protected void releaseOutputResource() { if (null!= previewCanvas) { previewCanvas.dispose(); } // 檢測工具也要釋放資源 detectService.releaseOutputResource(); }
由于檢測有些耗時,所以兩幀之間的間隔時間要低于普通預覽:@Override protected int getInterval() { return super.getInterval()/8; }
至此,功能已開發(fā)完成,再寫上main方法,代碼如下,請注意AgeDetectService構造方法的三個入參,分別是前面下載的三個文件在本機的位置:public static void main(String[] args) { String base = "E:\\temp\\202112\\25\\opencv\\"; DetectService detectService = new GenderDetectService( base + "haarcascade_frontalface_alt.xml", base + "gender\\deploy.prototxt", base + "gender\\gender_net.caffemodel"); new PreviewCameraWithGenderAge(detectService).action(1000); }
主程序已經寫完,接下來是核心功能編碼:服務接口回顧本篇的核心功能是檢測性別,相關代碼被封裝在DetectService接口的實現(xiàn)類GenderDetectService中,這個DetectService接口是咱們的老朋友了,之前識別相關的實戰(zhàn)都有它的身影,再來回顧一下,如下,定義了初始化、處理原始幀、釋放資源等關鍵行為的接口:package com.bolingcavalry.grabpush.extend;public interface DetectService { /** * 根據傳入的MAT構造相同尺寸的MAT,存放灰度圖片用于以后的檢測 * @param src 原始圖片的MAT對象 * @return 相同尺寸的灰度圖片的MAT對象 */ static Mat buildGrayImage(Mat src) { return new Mat(src.rows(), src.cols(), CV_8UC1); } /** * 初始化操作,例如模型下載 * @throws Exception */ void init() throws Exception; /** * 得到原始幀,做識別,添加框選 * @param frame * @return */ Frame convert(Frame frame); /** * 釋放資源 */ void releaseOutputResource();}
接下來,就是DetectService接口的實現(xiàn)類,也就是今天實戰(zhàn)的核心:GenderDetectService.java編碼:檢測服務實現(xiàn)今天的核心功能都集中在GenderDetectService.java中,直接貼出全部源碼吧,有幾處要注意的地方稍后會提到:package com.bolingcavalry.grabpush.extend;import com.bolingcavalry.grabpush.Constants;import lombok.extern.slf4j.Slf4j;import org.bytedeco.javacpp.indexer.Indexer;import org.bytedeco.javacv.Frame;import org.bytedeco.javacv.OpenCVFrameConverter;import org.bytedeco.opencv.opencv_core.*;import org.bytedeco.opencv.opencv_dnn.Net;import org.bytedeco.opencv.opencv_objdetect.CascadeClassifier;import static org.bytedeco.opencv.global.opencv_core.NORM_MINMAX;import static org.bytedeco.opencv.global.opencv_core.normalize;import static org.bytedeco.opencv.global.opencv_dnn.blobFromImage;import static org.bytedeco.opencv.global.opencv_dnn.readNetFromCaffe;import static org.bytedeco.opencv.global.opencv_imgproc.*;/** * @author willzhao * @version 1.0 * @description 音頻相關的服務 * @date 2021/12/3 8:09 */@Slf4jpublic class GenderDetectService implements DetectService { /** * 每一幀原始圖片的對象 */ private Mat grabbedImage = null; /** * 原始圖片對應的灰度圖片對象 */ private Mat grayImage = null; /** * 分類器 */ private CascadeClassifier classifier; /** * 轉換器 */ private OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); /** * 人臉檢測模型文件的下載地址 */ private String classifierModelFilePath; /** * 性別識別proto文件的下載地址 */ private String genderProtoFilePath; /** * 性別識別模型文件的下載地址 */ private String genderModelFilePath; /** * 推理性別的神經網絡對象 */ private Net cnnNet; /** * 構造方法,在此指定proto和模型文件的下載地址 * @param classifierModelFilePath * @param cnnProtoFilePath * @param cnnModelFilePath */ public GenderDetectService(String classifierModelFilePath, String cnnProtoFilePath, String cnnModelFilePath) { this.classifierModelFilePath = classifierModelFilePath; this.genderProtoFilePath = cnnProtoFilePath; this.genderModelFilePath = cnnModelFilePath; } /** * 初始化操作,主要是創(chuàng)建推理用的神經網絡 * @throws Exception */ @Override public void init() throws Exception { // 根據模型文件實例化分類器 classifier = new CascadeClassifier(classifierModelFilePath); // 實例化推理性別的神經網絡 cnnNet = readNetFromCaffe(genderProtoFilePath, genderModelFilePath); } @Override public Frame convert(Frame frame) { // 由幀轉為Mat grabbedImage = converter.convert(frame); // 灰度Mat,用于檢測 if (null==grayImage) { grayImage = DetectService.buildGrayImage(grabbedImage); } // 當前圖片轉為灰度圖片 cvtColor(grabbedImage, grayImage, CV_BGR2GRAY); // 存放檢測結果的容器 RectVector objects = new RectVector(); // 開始檢測 classifier.detectMultiScale(grayImage, objects); // 檢測結果總數(shù) long total = objects.size(); // 如果沒有檢測到結果,就用原始幀返回 if (total<1) { return frame; } int pos_x; int pos_y; Mat faceMat; //推理時的入參 Mat inputBlob; // 推理結果 Mat prob; // 如果有檢測結果,就根據結果的數(shù)據構造矩形框,畫在原圖上 for (long i = 0; i < total; i++) { Rect r = objects.get(i); // 人臉對應的Mat實例(注意:要用彩圖,不能用灰度圖!?。。? faceMat = new Mat(grabbedImage, r); // 縮放到神經網絡所需的尺寸 resize(faceMat, faceMat, new Size(Constants.CNN_PREIDICT_IMG_WIDTH, Constants.CNN_PREIDICT_IMG_HEIGHT)); // 歸一化 normalize(faceMat, faceMat, 0, Math.pow(2, frame.imageDepth), NORM_MINMAX, -1, null); // 轉為推理時所需的的blob類型 inputBlob = blobFromImage(faceMat); // 為神經網絡設置入參 cnnNet.setInput(inputBlob, "data", 1.0, null); //set the network input // 推理 prob = cnnNet.forward("prob"); // 根據推理結果得到在人臉上標注的內容 String lable = getDescriptionFromPredictResult(prob); // 人臉標注的橫坐標 pos_x = Math.max(r.tl().x()-10, 0); // 人臉標注的縱坐標 pos_y = Math.max(r.tl().y()-10, 0); // 給人臉做標注,標注性別 putText(grabbedImage, lable, new Point(pos_x, pos_y), FONT_HERSHEY_PLAIN, 1.5, new Scalar(0,255,0,2.0)); // 給人臉加邊框時的邊框位置 int x = r.x(), y = r.y(), w = r.width(), h = r.height(); // 給人臉加邊框 rectangle(grabbedImage, new Point(x, y), new Point(x + w, y + h), Scalar.RED, 1, CV_AA, 0); } // 釋放檢測結果資源 objects.close(); // 將標注過的圖片轉為幀,返回 return converter.convert(grabbedImage); } /** * 程序結束前,釋放人臉識別的資源 */ @Override public void releaseOutputResource() { if (null!=grabbedImage) { grabbedImage.release(); } if (null!=grayImage) { grayImage.release(); } if (null!=classifier) { classifier.close(); } if (null!= cnnNet) { cnnNet.close(); } } /** * 根據推理結果得到在頭像上要標注的內容 * @param prob * @return */ protected String getDescriptionFromPredictResult(Mat prob) { Indexer indexer = prob.createIndexer(); // 比較兩種性別的概率,概率大的作為當前頭像的性別 return indexer.getDouble(0,0) > indexer.getDouble(0,1) ? "male" : "female"; }}
上述代碼,有以下幾處需要注意的:構造方法的三個入參:classifierModelFilePath、cnnProtoFilePath、cnnModelFilePath分別是人臉檢測模型、性別檢測配置、性別檢測模型三個文件的本地存放地址檢測性別靠的是卷積神經網絡的推理,初始化的時候通過readNetFromCaffe方法新建神經網絡對象convert方法被調用時,會收到攝像頭捕捉的每一幀,在這里面先檢測出每個人臉,再拿每個人臉去神經網絡進行推理用神經網絡的推理結果生成人臉的標注內容,這段邏輯被放入getDescriptionFromPredictResult,下一篇《年齡檢測》的實戰(zhàn)同樣是使用神經網絡推理頭像的年齡,咱們只要寫一個GenderDetectService,并重寫getDescriptionFromPredictResult方法,里面的邏輯改成根據推理結果得到年齡,即可輕松完成任務,其他類都可以維持不變至此,編碼完成,接下來開始驗證驗證確保攝像頭工作正常,運行PreviewCameraWithGenderAge類的main方法請群眾演員登場,讓他站在攝像頭前,如下圖,性別識別成功,且實時展示:至此,本地窗口預覽集成人臉檢測和性別檢測的功能就完成了,得益于JavaCV的強大,整個過程是如此的輕松愉快,接下來請繼續(xù)關注欣宸原創(chuàng),《JavaCV的攝像頭實戰(zhàn)》系列還會呈現(xiàn)更多豐富的應用;得益于本篇所做的擴展準備,下一篇《年齡檢測》會更加簡單,一起來期待下一段輕松愉快的旅程吧;歡迎關注博客園:程序員欣宸學習路上,你不孤單,欣宸原創(chuàng)一路相伴...
標簽:
推薦
-
山姆巨型泡面桶原價168元,被炒至500元仍遭瘋搶,一路沖上熱搜,網友:饑餓營銷真的百試不厭 世界觀察
橙柿互動報道6月29日,位于深圳山姆前海店開業(yè),網上出現(xiàn)各種get購買攻
來源: -
全球速看:龍佰集團:主營產品鈦白售價大幅低于去年同期 一季度凈利潤同比降45.55%|世界熱消息
龍佰集團發(fā)布2023年第一季度報告顯示:公司實現(xiàn)營業(yè)收入69 72億元,同
來源: -
yellowearth是什么牌子_YellowEarth雪地靴
1991年成立于澳大利亞,是一家大型毛皮鞣制加工和管理公司,旗下?lián)碛醒?/p>
來源: -
山姆巨型泡面桶原價168元,被炒至500元仍遭瘋搶,一路沖上熱搜,網友:饑餓營銷真的百試不厭 世界觀察
橙柿互動報道6月29日,位于深圳山姆前海店開業(yè),網上出現(xiàn)各種get購買攻
來源: -
全球速看:龍佰集團:主營產品鈦白售價大幅低于去年同期 一季度凈利潤同比降45.55%|世界熱消息
龍佰集團發(fā)布2023年第一季度報告顯示:公司實現(xiàn)營業(yè)收入69 72億元,同
來源: -
yellowearth是什么牌子_YellowEarth雪地靴
1991年成立于澳大利亞,是一家大型毛皮鞣制加工和管理公司,旗下?lián)碛醒?/p>
來源: -
BBC:德赫亞將成為自由球員,但曼聯(lián)會在他結婚后繼續(xù)談判續(xù)約 今日熱搜
BBC:德赫亞將成為自由球員,但曼聯(lián)會在他結婚后繼續(xù)談判續(xù)約,曼聯(lián),結
來源: -
中電聯(lián):1-5月全國各電力交易中心累計組織完成市場交易電量21909.7億千瓦時 同比增長8.3%
據中國電力企業(yè)聯(lián)合會6月30日消息,1-5月,全國各電力交易中心累計組織
來源: -
頭條:專家建言山西特色專業(yè)鎮(zhèn):借會展興“鎮(zhèn)” 促產業(yè)集聚
專家建言山西特色專業(yè)鎮(zhèn):借會展興“鎮(zhèn)”促產業(yè)集聚---中新網大同6月30
來源: -
【世界聚看點】HICOOL 2023全球創(chuàng)業(yè)大賽醫(yī)藥健康賽道初賽開啟
HICOOL2023全球創(chuàng)業(yè)大賽醫(yī)藥健康賽道初賽開啟---中新網北京6月30日電今
來源: -
中國恒大:截至5月末恒大地產涉及未能清償?shù)狡趥鶆绽塾嫾s2776.88億元-環(huán)球聚看點
中國恒大在港交所公告,截至2023年5月末,恒大地產涉及未能清償?shù)牡狡?/p>
來源: -
糧農組織等機構聯(lián)手合作 聚焦總結分享中國農業(yè)發(fā)展成功經驗|全球快資訊
糧農組織等機構聯(lián)手合作聚焦總結分享中國農業(yè)發(fā)展成功經驗---中新網6月
來源:
財富更多》
-
全球資訊:廣西將辦中醫(yī)藥產業(yè)交流大會 集中展示豐富中醫(yī)藥資源
廣西將辦中醫(yī)藥產業(yè)交流大會集中展示豐...
-
避暑旅游正當時 2023“江西避暑旅游目的地”出爐
避暑旅游正當時2023“江西避暑旅游目的...
-
全球觀天下!總投資達6332億元 西部(重慶)科學城“曬出”三年建設成果
總投資達6332億元西部(重慶)科學城“...
-
頭條:專家建言山西特色專業(yè)鎮(zhèn):借會展興“鎮(zhèn)” 促產業(yè)集聚
專家建言山西特色專業(yè)鎮(zhèn):借會展興“鎮(zhèn)...
-
沈鐵:暑運預計發(fā)送旅客4090萬人次|環(huán)球精選
沈鐵:暑運預計發(fā)送旅客4090萬人次---中...
動態(tài)更多》
熱點
- realme10系列正式宣布 采用雙曲面屏正面頂部居中挖孔
- 五菱全新微型電動車內飾官圖發(fā)布 座椅采用星際形打孔工藝
- 努比亞Z40星空典藏版正式開售 采用微米級油畫筆觸紋理技術
- iQOO11系列正式官宣 首批搭載驍龍8Gen2機型之一
- 海信34英寸帶魚屏顯示器發(fā)布 支持165Hz刷新率
- OPPO明年將商用240W超級閃充 新一代電芯支持更高倍率充電
- 第一款Android手機渲染圖曝光 橫向滑蓋設計和全尺寸鍵盤
- 吉利首款純電皮卡11月9日上市 車輛續(xù)航里程超過610公里
- 努比亞Z40SPro星空典藏版正式公布 堪稱窄邊框天花板
- vivo無線運動耳機2今日正式上市 首銷只要119元
- 三國群英傳7秘籍大全猛將編號(三國群英傳7猛將編號)|焦點
- 黎曼假設 每日快播
- 全球消息!光合作用過程圖片_光合作用過程
- 晉控煤業(yè)(601001):好風憑借力 送其上青云
- 機器人把快遞送到家門!國內首個配送社區(qū)零售平臺“小力到家”上線
- 環(huán)球熱點!電腦壁紙殺生丸(殺生丸給鈴表白)
- 氫氧化鈉變質的探究題_如何證明氫氧化鈉變質 熱消息
- 6月PMI數(shù)據點評:制造業(yè)指數(shù)略超預期 非制造業(yè)保持擴張
- 2022年我國知識產權保護社會滿意度達81.25分 整體步入良好階段|當前關注
- 美股開盤:三大指數(shù)集體高開 熱門中概股多數(shù)上漲 小鵬汽車漲超8%
- 外匯局:一季度國際收支基本平衡 跨境雙向投融資活動保持穩(wěn)定|每日時訊
- 三菱奕歌和逍客怎么樣及大眾t cross多少錢|天天聚看點
- 外匯局:一季度我國外債規(guī)模有所增長 未來將繼續(xù)保持穩(wěn)定
- 河北省氫能產業(yè)創(chuàng)新聯(lián)合體成立 推動氫能產學研用一體化發(fā)展
- 全球新資訊:三星Galaxy S23 FE手機通過3C認證,配備25W快充技術
- 專家:更好發(fā)揮金融服務實體經濟和創(chuàng)新的作用
- 微視頻丨這是信仰的力量 全球今亮點
- 焦點!淄濱兩市婦聯(lián)幫扶協(xié)作 搭建企業(yè)合作平臺
- ai里面怎么取消投影效果_ai怎么取消投影
- 最前線|《琶洲產業(yè)互聯(lián)網發(fā)展報告》發(fā)布:產業(yè)互聯(lián)網正在助力數(shù)字經濟進入下半場 即時
- 環(huán)球熱點評!中國海軍第43批護航編隊抵達加納進行友好訪問
- 商務部:中國對接CPTPP規(guī)則開展先行先試 每日簡訊
- 領克汽車進入中國澳門市場
- 美國5月核心PCE物價指數(shù)同比升4.6%-焦點速遞
- 博士團打卡廣州南沙 招才引智助人才在穗發(fā)展
- 環(huán)球即時:第十七屆歐洽會開幕 聚焦中歐經貿合作新趨勢
- 世界新動態(tài):中泰證券:擬定增募資不超60億元
- 1-5月中國銷售彩票同比增長50%|獨家焦點
- 佳源科技7月7日深交所首發(fā)上會 擬募資9.11億元|焦點滾動
- 威門藥業(yè)選舉楊槐為公司董事長2022年公司凈利6129.1萬
- 莫里·科內(關于莫里·科內的簡介)|全球新資訊
- 借力西博會,助推“川藏鐵路第一城、綠色發(fā)展示范市”建設|天天新消息
- 匯景控股(09968):一直與專業(yè)顧問合作以遵守復牌指引及上市規(guī)則 繼續(xù)停牌 天天消息
- 觀天下!上交所:本周對杭州熱電等嚴重異常波動股票進行重點監(jiān)控
- 當前速看:華西股份漲6.84% 機構凈買入1.49億元
- 安井食品跌6.43% 機構凈賣出1.38億元_世界熱文
- 外匯局:截至2023年3月末,我國全口徑(含本外幣)外債余額171169億元
- 中國-非洲貿易指數(shù)首次對外發(fā)布 成中非貿易發(fā)展“晴雨表”
- 報告:德國去年資本外逃創(chuàng)紀錄 歐洲最大經濟體或已開啟去工業(yè)化進程
- 【天天聚看點】稷下新論:涵養(yǎng)實實在在的胸襟
- “董事長舉薦制” 破解專精特新人才評價之困(一) 世界熱訊
- 全環(huán)境立德樹人專題協(xié)商座談會召開_世界速看料
- 外匯局:2023年一季度我國經常賬戶順差5575億元|焦點消息
- 淄博市—俄羅斯(諾夫哥羅德州)經貿洽談會舉行
- 當前速讀:副市長沙向東上線“12345市長在線”
- 最好吃的鹵肉配方_鹵肉配方
- 福晶科技漲停 機構凈買入5276萬元
- 移為通信參加2023MWC上海,展出多款新品
- 環(huán)球看熱訊:春立醫(yī)療跌2.74% 2021年上市募11.5億華泰聯(lián)合保薦
- 5月彩票銷售同比增長超五成|世界時訊
- 慕思股份跌3.08% 去年募資15.6億招商證券保薦 天天簡訊
- 世界微頭條丨今年海外找工作,難哭了多少留學生
- 環(huán)球快資訊丨為世界經濟注入更多確定性力量——寫在第十四屆夏季達沃斯論壇閉幕之際
- 環(huán)球即時:北京辦公樓市場還在低谷:新增需求不足,中關村租金降幅最大
- 知曉即行動:宮頸癌認知水平與接種意愿正相關
- 恒玄科技跌1.64% 2020年上市超募27.6億元|全球時訊
- 注意!四方達將于7月17日召開股東大會-世界最資訊
- 智光電氣:以1.28億元增資控股西都(廣東)電力投資有限公司 全球獨家
- 全球新動態(tài):掀起最嗨浪潮 北京國際燕京啤酒文化節(jié)今晚開幕
- 校園傳奇之超級大腦_關于校園傳奇之超級大腦概略|環(huán)球快資訊
- 趣鏈科技攜手先陽新能源共同亮相“2023國際數(shù)字能源展”
- 速讀:最高法發(fā)布全國海事審判典型案例 堅定維護海洋權益
- 中歐班列(武漢)今年開行量超去年全年
- 盤點胖東來商業(yè)版圖 胖東來 胖 東來8頁報告調查顧客與員工爭執(zhí)-世界熱推薦
- 開源正正年內跌9.57%
- 理想汽車新增5座超充站:覆蓋北京保定杭州等地
- 半導體板塊漲1.52% 銅峰電子漲10.03%居首|環(huán)球快看
- 微軟發(fā)布 Windows 11 AI 輔助功能 Windows Copilot 首個預覽版
- 國元元澤1號年內跌8.89%-天天速訊
- 北京出臺機器人新政 支持開發(fā)機器人強化AI大模型支撐-天天精選
- 財政部:前5月國有企業(yè)營業(yè)總收入同比增長6.2%
- 熱血江湖手游發(fā)行商被強執(zhí)4832萬 龍圖游戲被強制執(zhí)行4832萬-環(huán)球實時
- 每日熱訊!模擬器怎么更換IP?改模擬器ip的方法
- 每日觀察!噴砂機專用砂料如何選擇?
- 咸亨國際:公司無人機相關產品及服務在公司整體營收占比非常小
- 今日報丨交通100老鷹表達力|放下執(zhí)著,方能從容自在
- 5月安徽水果零售價格上漲明顯-天天動態(tài)
- 微資訊!如何提升質量管理體系(如何提高質量管理水平)
- 天天動態(tài):盛夏時節(jié) 八方來客 共享鐘靈尼山與現(xiàn)代智慧碰撞的“饕餮盛宴”
- 環(huán)球最新:中國和緬甸新開一條國際航線
- 2023年中國科學院科普講解大賽舉辦
- Bluu Seafood獲得1750萬美元A輪融資
- 世界實時:安徽酒靈獲得天使輪融資五千萬
- 微軟必應聊天將提供AI炒股功能:可預判股價未來走勢 當前報道
- 艾爾登法環(huán)新手應該怎么玩?艾爾登法環(huán)的地圖碎片位置?
- 45萬美元一張門票!維珍銀河完成首次商業(yè)太空飛行-今日報
- 永劫無間怎么提升實力快?永劫無間怎么看幀數(shù)?
- 環(huán)球熱消息:中國貿促會:4月全球經貿摩擦措施涉及金額同比下降21.4%
- 蘋果網速顯示設置怎么設置?蘋果網速差怎么改善?
- 蘋果12不能指紋解鎖嗎?蘋果12的小圓點怎么調出來?
- 芯動聯(lián)科上市首日漲75% 募資14.7億一季度營收0.11億
- 古墓麗影全支線任務怎么做?古墓麗影的季票有什么用?
- 明陽電氣上市首日成交10億 超募15.8億申萬宏源保薦 今日要聞
- 永劫無間秘境怎么加時間?永劫無間秘境符玉怎么獲得?
- 今日16:00,淄博2023年初中學業(yè)水平考試成績公布! 天天動態(tài)
- vivox90支持無線充電嗎?vivox90有紅外線功能嗎?
- 玩游戲手機發(fā)熱怎么解決?手機發(fā)熱怎么降溫最快?
- 快資訊:Mind Network 獲得250萬美元種子輪融資
- 奔馳召回2518輛進口G級汽車 奔馳召回2518輛隱患車輛
- 世界熱訊:收評:三大指數(shù)集體收漲 電子化學品板塊全天強勢
- 安徽省馬鞍山市市場監(jiān)管局抽檢食品69批次 5批次不合格
- 環(huán)球播報:隆基6月單晶硅片價格公示 “P型M10 150μm厚度”價格下調超30%
- 環(huán)球微動態(tài)丨中加紫金混合基金變更基金經理
- 填志愿別只看“985/211”,這些實力院校也不差! 全球百事通
- 基地班是什么意思(生命科學與技術基地班)-世界快資訊
- 廣電運通:AI產業(yè)園工程已進入收尾階段
- 微軟推出AI購物工具:Bing和Edge上使用 可智能比價-微頭條
- 即時焦點:抖音直播治理導流欺詐行為 5月以來回收5.6W+主播直播權限
- Meta 解釋人工智能如何影響用戶 Facebook 和 Instagram 上看到的內容
- 【世界聚看點】空調市場產銷兩旺
- 【天天新視野】中科三環(huán):稀土永磁電機依然是新能源汽車驅動電機最優(yōu)解
- 復合銅箔概念爆發(fā),寶明科技、雙星新材漲停,東威科技等大漲
- 天天熱資訊!可持續(xù)發(fā)展助力價值共創(chuàng),完美世界控股集團發(fā)布2022年度可持續(xù)發(fā)展報告
- 世界熱點評!烽火電子擬收購陜西長嶺電子科技98.3950%股權
- 北京海博思創(chuàng)科技股份有限公司堅持儲能技術創(chuàng)新——為綠色發(fā)展蓄能_天天觀天下
- CASA出國獲200萬天使輪融資
- 剛剛!淄博發(fā)布高溫黃色預警信號
- 微軟、英偉達等領投,Inflection AI完成13億美元融資 全球頭條
- 天天熱議:園區(qū)升級擔當新角色——來自江蘇產業(yè)園區(qū)的調查
- 經濟日報攜手京東發(fā)布數(shù)據——“高顏值”蘊含大流量
- 全球貿易復蘇之路崎嶇不平
- 全球視點!安德利(605198)6月30日主力資金凈賣出89.71萬元
- 全球速訊:近八成受訪青年選專業(yè)最看重就業(yè)前景
- 全球今日訊!主婦神探(關于主婦神探的基本詳情介紹)
- 央視談MWC大會,F(xiàn)lyme Auto手車互聯(lián)!科技廠商確定方向