有時候,我們需要讀取某個畫素值,或者設定某個畫素值,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...