我正在使用 OpenCV 中的墊子。但是,我需要自己手動計算 Mat。有沒有辦法訪問 Mat 喜歡 2D 陣列?
const myMat = cv.matFromArray(cv, 3, 3, cv.CV_64F, [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
const newMat = someProcessThatReturnMat(myMat)
/* OpenCV in JS cannot access Mat like this */
const result = someProcess(newMat[1][2], newMat[2][0])
先感謝您
更新:問題是cv.matFromArray無法將二維陣列轉換為 Mat。您必須將其用作一維陣列。這就是為什么它永遠不會回傳正確的值。例如:
const myMat = cv.matFromArray(3, 3, cv.CV_64F, [1,2,3,4,5,6,7,8,9])
然后,您可以訪問該值
const value = myMat.doubleAt(1, 2) // row 1, col 2
uj5u.com熱心網友回復:
您需要使用該doubleAt(y,x)方法。
它是雙倍的,因為墊子的內容是CV_64F,而不是因為你想要雙打。
您還可以使用.data64F來訪問 Mat 資料的平面Float64Array。
OpenCV.js 是……粗糙。它起源于某人的 Google Summer of Code,從那以后就沒有受到過重要的關注。檔案相當于一些教程;API 檔案似乎完全丟失了。“Mat”介面模仿了at()C 中的方法,效果不佳,而不是查看 numpy (python) 或使這種訪問感覺“原生”到 javascript。使用 a 可以多載[]運算子,Proxy但未實作。
這是一個例子:https ://docs.opencv.org/4.x/de/d06/tutorial_js_basic_ops.html
隨意瀏覽OpenCV 的問題并提出一些改進建議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488147.html
標籤:javascript opencv 垫
