opencv 畫素值讀寫的三種方式以及速度比較

2021-10-10 18:44:50 字數 950 閱讀 3804

有時候,我們需要讀取某個畫素值,或者設定某個畫素值,opencv 提供了多種方法來實現。
函式 at()來實現讀去矩陣中的某個畫素,或者對某個畫素進行賦值操作。

cv::mat colorim(1920, 1080, cv_8uc3, cv::scalar(0, 0, 0));

for (int i = 0; i < colorim.rows; ++i)

} cv::imshow("colorim", colorim);

cv::waitkey(0);

上面**測試時間為 1ms不到

cv::mat colorim(1920, 1080, cv_8uc3, cv::scalar(0, 0, 0));

for (cv::matiterator_colorit = colorim.begin(); colorit != colorim.end(); colorit++)

cv::imshow("colorim", colorim);

cv::waitkey(0);

上面的**測試時間為30ms

指標操作來訪問畫素是非常高效的,但是務必十分地小心。c/c++中的指標操 作是不進行型別以及越界檢查的,如果指標訪問出錯可能(segment fault)。

cv::mat colorim(1920, 1080, cv_8uc3, cv::scalar(0, 0, 0));

for (int i = 0; i < colorim.rows; ++i)

} cv::imshow("colorim", colorim);

cv::waitkey(0);

上面**測試時間為 1ms不到

執行時間基於opencv420版本測的,記得早期版本的at()函式耗時有點高

opencv獲取畫素的值

opencv中獲取影象畫素的方法 方法一 注意記憶體中儲存順序是bgr 方法二 for int i 0 i img height i 方法三 對於單通道位元組型影象 iplimage img cvcreateimage cvsize 640,480 ipl depth 8u,1 uchar img ...

讀寫建議的三種方式

一 bufferedinputstream bufferedoutputstream 快取位元組流 使用方式和位元組流差不多,但是效率更高 推薦使用 try 清楚快取 out.flush 關閉流 in.close out.close catch exception e 二 bufferedreade...

執行緒的三種建立方

一,繼承thread 重寫run class programmer extends thread public static void main string args 二,繼承runnable 實現run class programmer implements runnable public st...