3
A
回答
1
Sets and Sparse Matrices
,23頁:
在OpenCV的稀疏矩陣使用CVSET用於存儲元件。
CvSparseMat* get_color_map(const IplImage* img)
{
int dims[] = { 256, 256, 256 };
CvSparseMat* cmap = cvCreateSparseMat(3, dims, CV_32SC1);
for(int i = 0; i < img->height; i++) for(int j = 0; j < img->width; j++)
{
uchar* ptr=&CV_IMAGE_ELEM(img,uchar,i,j*3);
int idx[] = {ptr[0],ptr[1],ptr[2]};
((int*)cvPtrND(cmap,idx))[0]++;
}
// print the map
CvSparseMatIterator it;
for(CvSparseNode *node = cvInitSparseMatIterator(mat, &iterator);
node != 0; node = cvGetNextSparseNode(&iterator))
{
int* idx = CV_NODE_IDX(cmap,node);
int count=*(int*)CV_NODE_VAL(cmap,idx);
printf(「(b=%d,g=%d,r=%d): %d\n」, idx[0], idx[1], idx[2], count);
}
return cmap;
}
6
使用C++接口可能更合適。請注意,文檔[1]中的示例代碼缺少模運算,因此失敗。
const int dims = 2;
int size[] = {3, 20}; // rows and columns if in two dimensions
SparseMat sparse_mat(dims, size, CV_32F);
for(int i = 0; i < 1000; i++) {
// create a random index in dims dimensions
int idx[dims];
for(int k = 0; k < dims; k++)
idx[k] = rand() % size[k];
sparse_mat.ref<float>(idx) += 1.f;
}
cout << "bottom right element @ (2,19) = " << sparse_mat.ref<float>(2,19) << "\n";
Mat dense;
sparse_mat.convertTo(dense, CV_32F);
cout << dense;
給出以下輸出
bottom right element @ (2,19) = 19
[9, 23, 13, 26, 18, 13, 18, 15, 13, 17, 13, 18, 19, 6, 20, 20, 12, 15, 15, 15;
17, 17, 14, 16, 12, 14, 17, 15, 15, 18, 24, 18, 13, 22, 18, 11, 18, 22, 17, 15;
19, 16, 14, 10, 18, 19, 10, 17, 18, 15, 24, 22, 18, 18, 18, 23, 21, 16, 14, 19]
[1]的OpenCV參考手冊。版本2.4.3。 2012,p。 46.
相關問題
- 1. 如何結合使用java的小馬庫的兩個sparsematrix?
- 2. 如何使用特徵密集矩陣添加特徵SparseMatrix?
- 3. 如何獲得sparseMatrix的零零索引?
- 4. 需要弄清楚如何處理sparsematrix
- 5. 如何使用opencv和engine.h
- 6. 如何使用OpenCV triangulatePoints
- 7. 如何使用OpenCV的
- 8. 如何使用opencv flann :: Index?
- 9. OpenCV的:如何使用createBackgroundSubtractorMOG
- 10. 如何使用OpenCV MatchTemplate?
- 11. 如何使用OpenCV的
- 12. 如何使用OpenCV的
- 13. 如何使用OpenCV與Qt5
- 14. 如何使用brython使用OpenCV python庫
- 15. 如何使熱圖使用python和OpenCV
- 16. 如何使用OpenCV的用VB.NET 2008
- 17. eigen 3.3 SparseMatrix <bool>操作
- 18. 如何保持SparseMatrix處於未壓縮狀態?
- 19. 如何計算(1 - SparseMatrix)一個巨大的稀疏矩陣?
- 20. 如何對Matrix包中的「sparseMatrix」類進行QR分解?
- 21. 如何混合使用OpenCV 1.0和OpenCV 2.0
- 22. py2app error for opencv/macports app。如何使用headerpad_max_install_names標誌編譯opencv?
- 23. 如何在opencv中使用fred的imagemagick textcleaner腳本C++/opencv java?
- 24. 如何使用opencv setOpenGlDrawCallback函數?
- 25. 如何在OpenCV C++中使用FeatureDetector?
- 26. 如何使用靜態opencv庫
- 27. 如何使用OpenCV執行LU分解?
- 28. 如何在OpenCV中使用gpu :: Stream?
- 29. 如何使用TBB構建OpenCV?
- 30. 如何在opencv中使用SIFT