国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

談?wù)勅绾问褂?opencv 進行圖像識別

這篇具有很好參考價值的文章主要介紹了談?wù)勅绾问褂?opencv 進行圖像識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

原文由hakaboom發(fā)表于TesterHome社區(qū),點擊原文鏈接可與作者直接交流。

1)前言

從18年開始,我接觸了叉叉助手(平臺已經(jīng)被請喝茶了),通過圖色識別,用來給常玩的游戲?qū)憭鞕C腳本,寫了也有兩三年.也算是我轉(zhuǎn)行當(dāng)游戲測試的理由.
去年11月,也是用了這身技術(shù),混進了外包,薪資還不錯,屬于是混日子了,崗位是在發(fā)行,接觸到很多游戲,因為接不了poco,到手只有apk,
日積月累,游戲越來越多,項目組卻還是只有這點人.為了減輕自己的壓力,就開始了UI自動化的不歸路.

2)游戲UI自動化

因為游戲引擎,是無法通過appium等框架去獲取,如果不接入一些SDK,那么識別的方法只有圖像識別.現(xiàn)在常見的開源框架

  1. 網(wǎng)易的Airtest,通過傳統(tǒng)識別進行自動化,還有airtestIDE可以簡單快速的編寫airtest代碼
  2. 騰訊GameAISDK,通過深度學(xué)習(xí)進行自動化(沒用過,好久不維護了)
  3. 阿里的SoloPi,主要功能是錄制、群控,有圖像匹配輔助

圖像相關(guān)的常見方法:

  1. 傳統(tǒng)的識別方法: 特征點、模板、輪廓
    • 特征點: SIFT, ORB
      • 下文會詳細講
    • 模板匹配: opencv的matchTemplate
      • 最簡單的方案,通過講模板在目標(biāo)圖像中平移,找到最符合的目標(biāo)
    • 輪廓: HALCON Shape-based Matching, Canny
      • 沒用過,寫不來,halcon的要花錢
  2. 基于深度學(xué)習(xí)的方法:
    • 文字識別: PaddleOCR,tesseract
      • paddleOCR基本上開箱即用,但是對于游戲內(nèi)的藝術(shù)字,還需要額外的訓(xùn)練
    • 圖像分類: paddleClas
      • 沒有實際用過,感覺可以用在區(qū)分場景,然后去做更加詳細的識別.比如識別彈窗
    • 目標(biāo)檢測: yolo
      • 之前很火的Fps外掛,基本就是靠這個去識別人體

UI自動化的核心在于查找元素,并且在什么位置.那么重點就會放在圖像識別上.
基于深度學(xué)習(xí)的方案,需要大量的正負樣本和標(biāo)注工作,因此只能放棄.取而代之的是傳統(tǒng)的識別方案.
在社區(qū)里、qq的測試群里就能發(fā)現(xiàn),大多數(shù)人對傳統(tǒng)圖像識別的印象是:慢,不準.
今年過年前,去張江面試過一家游戲公司,也是發(fā)行公司,聊了一個多小時,聊下來他們的方案是airtest一種機型截一個圖去做適配.我大受震撼.
總結(jié)下來圖像識別的UI自動化難點:

  1. 識別慢
  2. 識別結(jié)果不準確
  3. 多分辨率不兼容性
  4. 游戲UI更新,管理圖片庫的成本

3)怎么解決

那么我做了什么,項目就在這里:https://github.com/hakaboom/py_image_registration
目前也是在重構(gòu),重構(gòu)完成后可能起個好名字:https://github.com/hakaboom/image_registration

一開始是參考了airtest的aircv部分,當(dāng)時不想有那么多依賴,就拆出來了.
重構(gòu)之后,通過對opencv一些api的封裝,重新組織了構(gòu)架和算法.目前效果感覺不錯,也已經(jīng)給airtest提了pr,后續(xù)也會推進合并.

安裝opencv-python

建議版本可以是4.5.5

  1. pypi上有編譯好的,但是只能用cpu方法:
    • pip install opencv-python
    • pip install opencv-contrib-python
  2. 從源碼編譯,可以自定義更多的東西,比如增加cuda支持
    • 先從opencv倉庫克隆代碼
    • 剩下的看這里 https://github.com/hakaboom/py_image_registration/blob/master/doc/cuda_opencv.md

什么是特征點

簡單的理解: 用于描述圖像特征的關(guān)鍵點

常見的特征點提取算法:

  1. SIFT: 尺度不變特征變換. opencv只有cpu實現(xiàn)
  2. SURF: surf的加速算法. opencv有cpu和cuda實現(xiàn)
  3. ORB: 使用FAST特征檢測和BRIEF特征描述子. opencv有cpu和cuda實現(xiàn)

他們的好處是什么: 尺度和旋轉(zhuǎn)不變性,說白了就是兼容不同分辨率、旋轉(zhuǎn)、尺度的變換
速度排序: ORB(cuda)>SURF(cuda)>ORB>SURF>SIFT
效果排序(效果不止是特征點的數(shù)量,更重要的是特征點的質(zhì)量): SIFT>ORB>SURF

例子

  • 6.png(2532x1170)iphone12pro上的截圖
  • 4.png(1922x1118 實際游戲渲染是1920x1080,多出來的是windows邊框)崩三桌面端的截圖, 裁剪了右上角的藍色加號區(qū)域當(dāng)模板
import cv2
import time
from baseImage import Image, Rect
from image_registration.matching import SIFT

match = SIFT()
im_source = Image('tests/image/6.png')
im_search = Image('tests/image/4.png').crop(Rect(1498,68,50,56))

start = time.time()
result = match.find_all_results(im_source, im_search)
print(time.time() - start)
print(result)
img = im_source.clone()
for _ in result:
    img.rectangle(rect=_['rect'], color=(0, 0, 255), thickness=3)
img.imshow('ret')
cv2.waitKey(0)

結(jié)果可以得到三個加號的位置

[
    {'rect': <Rect [Point(1972.0, 33.0), Size[56.0, 58.0]], 'confidence': 0.9045119285583496}, 
    {'rect': <Rect [Point(2331.0, 29.0), Size[52.0, 66.0]], 'confidence': 0.9046278297901154}, 
    {'rect': <Rect [Point(1617.0, 30.0), Size[51.0, 64.0]], 'confidence': 0.9304171204566956}
]

怎么進行匹配

Airtest的aircv做了什么

https://github.com/AirtestProject/Airtest/blob/d41737944738e651dd29564c29b88cc4c2e71e2e/airtest/aircv/keypoint_base.py#L133
1.獲取特征點
2.匹配特征點

def match_keypoints(self, des_sch, des_src):
    """Match descriptors (特征值匹配)."""
    # 匹配兩個圖片中的特征點集,k=2表示每個特征點取出2個最匹配的對應(yīng)點:
    return self.matcher.knnMatch(des_sch, des_src, k=2)

我們可以看到,這邊k=2代表,一個模板上的特征點,去匹配兩個目標(biāo)圖像的特征點
3.篩選特征點

good = []
for m, n in matches:
   if m.distance < self.FILTER_RATIO * n.distance:
       good.append(m)

通過計算兩個描述符之間的距離差,來篩選結(jié)果

4.根據(jù)透視變換或坐標(biāo)計算,獲取矩形,然后計算置信度

那么以上步驟會存在什么問題

  1. 在第二步,假設(shè)圖片中存在n個目標(biāo)圖片,那么還是k=2的話,就會導(dǎo)致特征點數(shù)量變少
  2. 在第三步,篩選的方法不太合理,實際debug中會發(fā)現(xiàn),一些特征點即使distance數(shù)值很高,但從結(jié)果上看,還是符合目標(biāo)的,那么就意味著單純根據(jù)距離去篩選特征點
    的方法是不靠譜的
  3. 在第四步,獲取完特征點后,airtest的方式是,根據(jù)透視變換獲取目標(biāo)的四個頂點坐標(biāo),計算出最小外接矩形.
    那么如果目標(biāo)圖片存在旋轉(zhuǎn)/形變,那么最后獲取的圖片會裁剪到多余目標(biāo),造成置信度降低

既然airtest存在這些問題,那么我做了什么改動,我把步驟一個個拆分

我的特征點匹配

1.讀取圖片

from baseImage import Image
im_source = Image('tests/image/6.png')

這邊用到了我另外一個庫 https://github.com/hakaboom/base_image
主要的用處對opencv的圖像數(shù)據(jù)進行格式和類型的轉(zhuǎn)換,以及一些接口的包裝

  • 使用place參數(shù),修改數(shù)據(jù)格式
    • Ndarray: 格式為numpy.ndarray格式
    • Mat: 和numpy基本一致
    • Umat: python的綁定不多,沒有ndarray靈活,可以用于opencl加速
    • GpuMat: opencv的cuda格式,需要注意顯存消耗
from baseImage import Image
from baseImage.constant import Place
    
Image(data='tests/image/0.png', place=Place.Ndarray)  # 使用numpy
Image(data='tests/image/0.png', place=Place.Mat)  # 使用Mat
Image(data='tests/image/0.png', place=Place.UMat)  # 使用Umat
Image(data='tests/image/0.png', place=Place.GpuMat)  # 使用cuda

2.創(chuàng)建特征點檢測類
這邊會有一些參數(shù),除了threshold(過濾閾值)、rgb(是否通過rgb通道檢測)以為,還有可以加入特征點提取器的一些配置,一般默認就好,具體可以查opencv文檔

from image_registration.matching import SIFT

match = SIFT(threshold=0.8, rgb=True, nfeatures=50000)

3.識別

from image_registration.matching import SIFT
from baseImage import Image, Rect


im_source = Image('tests/image/6.png')
im_search = Image('tests/image/4.png').crop(Rect(1498,68,50,56))

match = SIFT(threshold=0.8, rgb=True, nfeatures=50000)
result = match.find_all_results(im_source, im_search)

4.解析下find_all_results里做了什么,可以在image_registration.matching.keypoint.base里找到基類

  • 第一步: 創(chuàng)建特征點提取器BaseKeypoint.create_matcher
    例:image_registration.matching.keypoint.sift
def create_detector(self, **kwargs) -> cv2.SIFT:
    nfeatures = kwargs.get('nfeatures', 0)
    nOctaveLayers = kwargs.get('nOctaveLayers', 3)
    contrastThreshold = kwargs.get('contrastThreshold', 0.04)
    edgeThreshold = kwargs.get('edgeThreshold', 10)
    sigma = kwargs.get('sigma', 1.6)
    
    detector = cv2.SIFT_create(nfeatures=nfeatures, nOctaveLayers=nOctaveLayers, contrastThreshold=contrastThreshold,
                                edgeThreshold=edgeThreshold, sigma=sigma)
    return detector
  • 第二步: 創(chuàng)建特征點匹配器BaseKeypoint.create_detector用于匹配模板和目標(biāo)圖片的特征點
    有兩種匹配器,
    • BFMatcher: 暴力匹配, 總是嘗試所有可能的匹配
    • FlannBasedMatcher: 算法更快,但是也能找到最近鄰的匹配
  • 第三步: 提取特征點BaseKeypoint.get_keypoint_and_descriptor
    用第一步創(chuàng)建的提取器去獲取特征點.ORB這種,還需要額外的去增加描述器.具體就看代碼實現(xiàn)吧.
  • 第四步: 匹配特征點
    用第二步創(chuàng)建的匹配器,獲取特征點集
  • 第五步: 篩選特征點BaseKeypoint.filter_good_point
    • cv2.DMatchopencv的匹配關(guān)鍵點描述符類
      • distance: 兩個描述符之間的距離(歐氏距離等),越小表明匹配度越高
      • imgIdx: 訓(xùn)練圖像索引
      • queryIdx: 查詢描述符索引(對應(yīng)模板圖像)
      • trainIdx: 訓(xùn)練描述符索引(對應(yīng)目標(biāo)圖像)
    • cv2.Keypointopencv的特征點類
      • angle: 特征點的旋轉(zhuǎn)方向(0~360)
      • class_id: 特征點的聚類ID
      • octave:特征點在圖像金字塔的層級
      • pt: 特征點的坐標(biāo)(x,y)
      • response: 特征點的響應(yīng)強度
      • size: 特征點的直徑大小
        知道了這兩種類之后,我們就可以通過第四步獲取的特征點集進行篩選
    • 步驟1: 根據(jù)queryIdx的索引對列表進行重組,主要目的是,讓一個模板的特征點只可以對應(yīng)一個目標(biāo)的特征點
    • 步驟2: 根據(jù)distance的升序,對特征點集進行排序,提取出第一個點,也就是當(dāng)前點集中,distance數(shù)值最小的點,為待匹配點A
    • 步驟3. 獲取點待匹配點A對應(yīng)的queryIdxtrainIdx的keypoint(query_keypoint,train_keypoint,通過兩個特征點的angle可以計算出,特征點的旋轉(zhuǎn)方向
    • 步驟4. 計算train_keypoint與其他特征點的夾角,根據(jù)旋轉(zhuǎn)不變性,我們可以根據(jù)模板上query_keypoint的夾角,
      去篩選train_keypoint的夾角
    • 步驟5. 計算以query_keypoint為原點,其他特征點的旋轉(zhuǎn)角,還是根據(jù)旋轉(zhuǎn)不變性,我們可以再去篩選以train_keypoint原點,其他特征的的旋轉(zhuǎn)角
    • 最后,我們就可以獲取到,所有匹配的點、圖片旋轉(zhuǎn)角度、基準點(待匹配點A)

5.篩選完點集后,就可以進行匹配了,這邊會有幾種情況BaseKeypoint.extract_good_points

  • 沒有特征點,其實肯定會有一個特征點
  • 有1組特征點BaseKeypoint._handle_one_good_points
    - 根據(jù)兩個特征點的size大小,獲取尺度的變換
    - 根據(jù)步驟4中返回的旋轉(zhuǎn)角度,獲取變換后的矩形頂點
    - 通過透視變換,獲取目標(biāo)圖像區(qū)域,與目標(biāo)圖像進行模板匹配,計算置信度
  • 有2組特征點BaseKeypoint._handle_two_good_points
    - 計算兩組特征點的兩點之間距離,獲取尺度的變換
    - 根據(jù)步驟4中返回的旋轉(zhuǎn)角度,獲取變換后的矩形頂點
    - 通過透視變換,獲取目標(biāo)圖像區(qū)域,與目標(biāo)圖像進行模板匹配,計算置信度
  • 有3組特征點BaseKeypoint._handle_three_good_points
    - 根據(jù)三個特征點組成的三角形面積,獲取尺度的變換
    - 根據(jù)步驟4中返回的旋轉(zhuǎn)角度,獲取變換后的矩形頂點
    - 通過透視變換,獲取目標(biāo)圖像區(qū)域,與目標(biāo)圖像進行模板匹配,計算置信度
  • 有大于等于4組特征點BaseKeypoint._handle_many_good_points
    - 使用單矩陣映射BaseKeypoint._find_homography,獲取變換后的矩形頂點
    - 通過透視變換,獲取目標(biāo)圖像區(qū)域,與目標(biāo)圖像進行模板匹配,計算置信度

6.刪除特征點
匹配完成后,如果識別成功,則刪除目標(biāo)區(qū)域的特征點,然后進入下一次循環(huán)

4)基準測試

設(shè)備環(huán)境:

  • i7-9700k 3.6GHz
  • NvidiaRTX 3080Ti
  • cuda版本11.3
  • opencv版本:4.5.5-dev(從源碼編譯)

測試內(nèi)容: 循環(huán)50次,獲取目標(biāo)圖片和模板圖片的特征點.

注:沒有進行特征點的篩選, 特征點方法沒有進行模板匹配計算置信度,因此實際速度會比測試的速度要慢

從圖中可以看出cuda方法的速度最快,同時cpu的占用也小,原因是這部分算力給到了cuda

因為沒有用代碼獲取cuda使用率,這邊在任務(wù)管理器看的,只能說個大概數(shù)

  • cuda_orb: cuda占用在35%~40%左右
  • cuda_tpl: cuda占用在15%~20%左右
  • opencl_surf: cuda占用在13%左右
  • opencl_akaze: cuda占用在10%~15%左右

還有其他的算法,opencv沒有提供cuda或者是opencl的實現(xiàn),只能用cpu加速

談?wù)勅绾问褂?opencv 進行圖像識別
談?wù)勅绾问褂?opencv 進行圖像識別

5)怎么優(yōu)化速度

  1. airtest慢的一個原因在于,只用了cpu計算.如果能釋放算力到gpu上,速度就會有成倍的增長.

    opencv已經(jīng)給我們做好了很多接口.我們可以通過cv2.cuda.GpuMat, cv2.UMat調(diào)用cuda和opencl的算法.

    通過baseImage可以快速的創(chuàng)建對應(yīng)格式的圖像
from baseImage import Image
from baseImage.constant import Place
      
Image('tests/images/1.png', place=Place.GpuMat) 
Image('tests/images/1.png', place=Place.UMat) 

可以用cuda加速的識別方法, 需要調(diào)用其他的類函數(shù),且圖片格式需要是cv2.cuda.GpuMat

  • surf: 沒寫,下次再補
  • orb: 對應(yīng)函數(shù)image_registration.matching.keypoint.orb.CUDA_ORB
  • matchTemplateimage_registration.matching.template.matchTemplate.CudaMatchTemplate

可以用opencl加速的識別方法, 只需要傳圖像參數(shù)的時候,格式是UMat,opencv會自動的調(diào)用opencl方法

  • surf
  • orb
  • matchTemplate

這邊只講了特征點獲取/模板匹配的方法,在其他的圖像處理函數(shù)中cudaopencl也能有一定的加速,但是不如以上方法明顯

  1. 從框架設(shè)計上進行加速.(可能只限于游戲應(yīng)用,傳統(tǒng)app用不了)
  • 從游戲上講,我們預(yù)先知道一些控件,在屏幕中的坐標(biāo)位置.分辨率進行轉(zhuǎn)換時,我們可以通過計算控件的位置,裁剪對應(yīng)位置的圖像,通過模板匹配進行快速的識別.
    • 舉個例子,下面兩張圖,一個是1280x720下的截圖,一個是2532x1170下的截圖
    • 1280x720下郵件控件的坐標(biāo)范圍是Rect(372,69,537,583)
    • 通過下面的計算方式,我們可以得出2532x1170下,范圍是Rect(828,110,874,949),通過裁剪軟件取得的范圍是Rect(830,112,874,948)
    • 具體的原理是利用了,引擎的縮放和錨點原理,反向求出坐標(biāo)范圍.去適應(yīng)一些黑邊,劉海的情況.
    • 求出范圍后,裁剪范圍的圖片,和模板去做匹配,就可以快速的識別一些固定位置的控件
from baseImage import Rect
from baseImage.coordinate import Anchor, screen_display_type, scale_mode_type


anchor = Anchor(
    dev=screen_display_type(width=1280, height=720),
    cur=screen_display_type(width=2532, height=1170, top=0, bottom=0, left=84, right=84),
    orientation=1, mainPoint_scale_mode=scale_mode_type(), appurtenant_scale_mode=scale_mode_type()
)

rect = Rect(371, 68, 538, 584)
point = anchor.point(rect.x, rect.y, anchor_mode='Middle')
size = anchor.size(rect.width, rect.height)
print(Rect.create_by_point_size(point, size))
# <Rect [Point(828.9, 110.5), Size[874.2, 949.0]]

談?wù)勅绾问褂?opencv 進行圖像識別
談?wù)勅绾问褂?opencv 進行圖像識別

  1. 建立模板庫,預(yù)先加載模板,得到屏幕圖片后,通過一些相似度計算baseImage.utils.ssim對場景進行識別與分類,然后去識別相應(yīng)場景的特征點.用這樣的方法去減少計算量
  • 這邊其實有想法去擴展到深度學(xué)習(xí),比如之前說的圖像分類.首先我們建立了一個很大的模板庫,可以拆分出來界面1, 界面2,界面3和一些通用控件
  • 再通過分類去獲得當(dāng)前在什么界面,然后只識別這個界面的控件,達到減少計算量的作用

#6)備注
有其他疑問的話,可以在testerhome的游戲測試qq群里找到我581529846

原文由hakaboom發(fā)表于TesterHome社區(qū),點擊原文鏈接可與作者直接交流。

談?wù)勅绾问褂?opencv 進行圖像識別
今日份的知識已攝入~
想了解更多前沿測試開發(fā)技術(shù):歡迎關(guān)注「第十屆MTSC大會·上海」>>>
1個主會場+12大專場,大咖云集精英齊聚
12個專場包括:
知乎、OpenHarmony、開源、游戲、酷家樂、音視頻、客戶端、服務(wù)端、數(shù)字經(jīng)濟、效能提升、質(zhì)量保障、智能化測試文章來源地址http://www.zghlxwxcb.cn/news/detail-494751.html

到了這里,關(guān)于談?wù)勅绾问褂?opencv 進行圖像識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 如何使用OpenCV進行圖像讀取和顯示?

    如何使用OpenCV進行圖像讀取和顯示?

    使用OpenCV進行圖像讀取和顯示是計算機視覺領(lǐng)域中的常見任務(wù)之一。下面是關(guān)于如何使用OpenCV進行圖像讀取和顯示的簡要步驟和示例代碼。?? ?首先,你需要安裝OpenCV庫并確保正確導(dǎo)入它。然后,按照以下步驟執(zhí)行圖像讀取和顯示操作: 導(dǎo)入OpenCV庫: 讀取圖像文件: 在這個

    2024年02月06日
    瀏覽(24)
  • 詳細介紹如何使用 OpenCV 對圖像進行銳化

    將了解銳化圖像的過程 , 我們將使用內(nèi)核來突出顯示每個特定像素并增強其發(fā)出的顏色。 它與模糊過程非常相似,只不過現(xiàn)在我們不是創(chuàng)建一個內(nèi)核來平均每個像素強度,而是創(chuàng)建一個內(nèi)核,該內(nèi)核將使像素強度更高,因此對人眼來說更加突出。 很高興知道 內(nèi)核用于模糊

    2024年02月12日
    瀏覽(21)
  • 如何使用Python中的OpenCV對圖像進行調(diào)整大?。? decoding=

    如何使用Python中的OpenCV對圖像進行調(diào)整大???

    OpenCV ?提供了函數(shù)? cv2.resize() ?用于調(diào)整圖像大小。OpenCV中的調(diào)整大小被稱為? 縮放 ?。我們可以通過指定圖像大小或縮放因子來調(diào)整圖像大小。當(dāng)我們指定縮放因子時,寬高比會得到保留。 cv2.resize() ?函數(shù)中有不同的插值方法: cv2.INTER_AREA ?—— 用于縮小圖像。 cv2.INTER

    2024年02月04日
    瀏覽(27)
  • Go語言使用gosseract 庫來進行圖像文字識別,識別出來的中文是亂碼的?如何解決?

    如果您在使用 gosseract 庫進行圖像文字識別時,得到的中文文字是亂碼,可能是因為默認情況下 gosseract 以及 Tesseract 引擎并不支持中文字符的識別。要解決這個問題,您需要進行一些配置和設(shè)置。 以下是解決方案的步驟: 1 安裝 Tesseract 和 Language Data :確保您已經(jīng)安裝了 Te

    2024年02月02日
    瀏覽(94)
  • [C++] 如何使用opencv對多個圖像進行橫向或者縱向拼接

    圖像拼接是指將多張圖片按照一定的規(guī)則和算法進行組合,形成一張大圖的過程。在實際應(yīng)用中,常常需要將多張拍攝的圖片拼接成一幅完整的場景或物體照片。 圖像拼接是一個圖像處理過程中常見的應(yīng)用場景。我們可以通過opencv庫非常容易實現(xiàn)多個圖像的橫向或者縱向的拼

    2024年01月18日
    瀏覽(24)
  • 如何在Flutter應(yīng)用中使用 OpenCV和 CC++庫進行圖像流處理

    如何在Flutter應(yīng)用中使用 OpenCV和 CC++庫進行圖像流處理

    本文將幫助你在 Android 和 iOS 中為 Flutter 應(yīng)用程序集成 C/C++ 插件。 問題1: Flutter camera 插件沒有為快速復(fù)雜的圖像流處理提供完整的指南。 問題2: Flutter camera 插件處理圖像流太慢。 問題3: 圖像處理需要OpenCV包 問題4: 你當(dāng)前的圖像流處理實現(xiàn)正在阻塞 UI 并導(dǎo)致你的應(yīng)用程

    2024年02月08日
    瀏覽(30)
  • AI:162-如何使用Python進行圖像識別與處理深度學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    AI:162-如何使用Python進行圖像識別與處理深度學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    本文收錄于專欄:精通AI實戰(zhàn)千例專欄合集 從基礎(chǔ)到實踐,深入學(xué)習(xí)。無論你是初學(xué)者還是經(jīng)驗豐富的老手,對于本專欄案例和項目實踐都有參考學(xué)習(xí)意義。 每一個案例都附帶關(guān)鍵代碼,詳細講解供大家學(xué)習(xí),希望可以幫到大家。正在不斷更新中~ 在當(dāng)今數(shù)字化時代,圖像處

    2024年04月26日
    瀏覽(292)
  • Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓(xùn)練與識別

    Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓(xùn)練與識別

    目錄 Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓(xùn)練與識別 一、簡單介紹 二、簡單進行人臉訓(xùn)練與識別 1、LBPH(Local Binary Patterns Histograms)算法進行人臉訓(xùn)練和識別 2、實現(xiàn)步驟: 3、判斷是誰的人臉: 案例中涉及的關(guān)鍵函數(shù)說

    2024年04月26日
    瀏覽(145)
  • Baumer工業(yè)相機堡盟工業(yè)相機如何使用BGAPISDK和OpenCV設(shè)置圖像進行比例顯示(C++)

    Baumer工業(yè)相機堡盟相機是一種高性能、高質(zhì)量的工業(yè)相機,可用于各種應(yīng)用場景,如物體檢測、計數(shù)和識別、運動分析和圖像處理。 Baumer的萬兆網(wǎng)相機擁有出色的圖像處理性能,可以實時傳輸高分辨率圖像。此外,該相機還具有快速數(shù)據(jù)傳輸、低功耗、易于集成以及高度可擴

    2024年02月10日
    瀏覽(24)
  • Vue中如何進行圖像識別與人臉對比

    Vue中如何進行圖像識別與人臉對比

    隨著人工智能的發(fā)展,圖像識別和人臉識別技術(shù)已經(jīng)被廣泛應(yīng)用于各種應(yīng)用程序中。Vue作為一種流行的前端框架,提供了許多實用工具和庫,可以幫助我們在應(yīng)用程序中進行圖像識別和人臉識別。在本文中,我們將介紹如何使用Vue進行圖像識別和人臉對比。 圖像識別是一種計

    2024年02月09日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包