我想聲明一個cv :: Mat對象,並在我的代碼中的其他地方,改變其維度(nrows和ncols)。我在OpenCV的文檔中找不到任何方法。他們總是建議在構建器中包含維度。如何動態更改cv :: Mat圖像的尺寸?
回答
一個簡單而乾淨的方法是使用create()方法。你可以把它多次,只要你想,它會重新分配時paramters發送到創建和當前圖像參數不匹配的圖像緩存:
Mat frame;
for(int i=0;i<n;i++)
{
...
// if width[i], height[i] or type[i] are != to those on the i-1
// or the frame is empty(first loop)
// it allocates new memory
frame.create(width[i], height[i], type[i]);
...
// do some processing
}
如果您想要調整圖像大小,請選擇!
創建一個新的Mat dst
與維和數據輸入你想要的,那麼:
cv::resize(src, dst, dst.size(), 0, 0, cv::INTER_CUBIC);
有除了cv::INTER_CUBIC
其他插值方法,檢查文檔。
感謝卡爾,但我的問題是,我想動態地定義cv :: Mat對象的類型和維度。 resize()可能是一個解決方案,但它不完全是我正在尋找的。 – Rasoul 2011-12-22 16:28:52
那麼,我已經使用了'resize()'來達到這個目的(就我所能理解的情況而言),這比我可以算的更多。每當你需要改變'src' Mat的尺寸時,你所要做的就是用你想要的尺寸和類型聲明一個新的Mat,並執行'resize()',以便將數據擴展到新的尺寸。如果你願意,你仍然可以執行'src = dst.clone();'將redimensioned數據複製到原始的Mat。 – karlphillip 2011-12-22 16:38:59
你只是想用你計算的Size
變量來定義它嗎?
// dynamically compute size...
Size dynSize(0, 0);
dynSize.width = magicWidth();
dynSize.height = magicHeight();
int dynType = CV_8UC1;
// determine the type you want...
Mat dynMat(dynSize, dynType);
如果你知道的最大尺寸,只需要使用行/的cols的子範圍從總墊使用的功能CV ::墊:: rowRange和/或CV ::墊:: colRange
http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-rowrange
- 1. N維cv尺寸的大小:: Mat
- 2. 動態改變圖像尺寸
- 3. 動態圖像尺寸div
- 4. 在jQuery中更改圖像的尺寸
- 5. layout_weight更改圖像的尺寸
- 6. 如何更改散景圖的尺寸
- 7. 如何根據窗口大小動態更改圖像/ div尺寸?
- 8. 根據屏幕尺寸更改圖像
- 9. 更改TinyMCE默認圖像尺寸
- 10. 根據圖像尺寸更改interfaceOrderation
- 11. 動態減少圖像尺寸以及C#中的圖像尺寸
- 12. 更改圖的尺寸MATLAB
- 13. 更改從緩衝區複製的圖像cv :: Mat影響原始圖像
- 14. 動態改變屏幕尺寸的圖像路徑
- 15. 如何在PySide QT中動態更改面板的尺寸?
- 16. 如何使用動態尺寸將圖像蒙版到圖形?
- 17. 如何更改相機拍攝圖像的尺寸
- 18. 如何更改GPUImage中的處理圖像尺寸
- 19. 更改尺寸
- 20. 圖像尺寸,
- 21. 如果寬度大於給定尺寸,如何更改圖像
- 22. gRaphael餅圖動態尺寸
- 23. SLD動態圖形尺寸
- 24. 圖像尺寸
- 25. 尺寸圖像的尺寸1600 * 1200
- 26. display opencv cv ::在gtkmm中的Mat圖像
- 27. IOS啓動圖像尺寸
- 28. 圖像尺寸自動
- 29. 動畫大尺寸圖像
- 30. cv :: Mat aaa()之間的區別和cv :: Mat aaa = cv :: Mat();
不會創建()破壞原始圖像?我以爲你必須使用調整大小 – 2012-12-21 05:17:32
你是對的Mat ::創建去引用以前的數據http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-create而Mat :: resize保留它就像STL矢量類http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-resize – gantzer89 2013-11-24 18:48:15
由於我懶得解釋,resize()不起作用的STL容器的功能,並在這種情況下create()做這項工作。如果新尺寸與原始尺寸不匹配,它只會重新分配。 – Sam 2013-11-25 08:43:20