22:38
載入影象 cv::imread
功能是載入影象檔案成為乙個mat物件,
其中第乙個引數表示影象檔案名稱
第二個引數表示載入的影象是什麼型別,支援常見的三個引數值
imread_unchanged(<0)表示載入原圖,不做任何改變
imread_grayscale(0)表示把原圖作為灰度影象載入進來
imread_color(>0)表示把原圖作為rgb影象載入進來
注意:opencv支援jpg、png、tiff等常見格式影象檔案載入
顯示影象(cv::namedwindos與cv::imshow)
namedwindos功能是建立乙個opencv視窗,它是由opencv自動建立與釋放,無需去銷毀它,(注意:早期版本需要destroy銷毀)
常見用法namedwindow("window title",window_autosize)
window_autosize會自動根據影象大小,顯示視窗大小,不能人為改變視窗大小
window_normal跟qt整合的時候會使用,允許修改視窗大小
imshow根據視窗名稱顯示影象到指定視窗去,第乙個引數是視窗名稱,第二個引數是mat物件
修改影象 cv::cvtcolor
cvtcolor的功能是把影象從乙個彩色空間轉換到另乙個色彩空間,有三個引數,第乙個引數表示源影象,第二個引數表示色彩空間轉換後影象,第三個影象表示源和目標色彩空間如:color_bgr2hls、color_bgr2gray等
cvtcolor(image,gray_image,color_bgr2gray);
儲存影象 cv::imwrite
imwrite("路徑名",名);
#include
#include
#include
using namespace cv;
int main(int argc,char** ar**)
namedwindow("opencv setup demo",cv_window_autosize);
imshow("opencv setup demo",src);
namedwindow("output windows",cv_window_autosize);
mat output_image;
cvtcolor(src,output_image,cv_bgr2hls);
imshow("output windows",output_image);
imwrite("路徑名",output_image);
waitkey(0);
return 0;
}獲取影象畫素指標
cv_assert(myimage.depth()==cv8u);
mat.ptr(int i = 0)獲取畫素矩陣的指標,索引i表示第幾行,從0開始計行數
獲得當前行指標const uchar* current = myimage.ptr(row);
獲取當前畫素點p(row,col)的畫素值p(row,col)=current[col]
畫素範圍處理saturate_cast
saturate_cast(-100),返回0.
saturate_cast(288),返回255
saturate_cast(100),返回100
這個函式的功能是確保rgb值的範圍在0~255之間
掩膜操作實現影象對比度調整
紅色是中心畫素,從上到下,從左到右對每個畫素做同樣的處理操作,得到最終結果就是對比度提高之後的輸出影象mat物件
矩陣掩膜操作十分簡單,根據掩膜來重新計算每個畫素的畫素值,掩膜(mask也被稱為kernel)
通過掩膜操作實現影象對比度提高。
i(i,j)=5*i(i,j)-[i(i-1,j)+i(i+1,j)+i(i,j-1)+i(i,j+1)]
0 -1 0
-1 5 -1
0 -1 0
#include
#include
#include
using namespace cv;
int main(int argc;char** ar**)
namedwindow("input image",cv_window_autosize);
imshow("input image",src);
//int cols = (src.cols - 1) * src.channels();
int offsetx = src.channels();
int rows = src.rows;
dst = mat::zeros(src.size(),src.type());
for(int row = 1; row < (rows - 1);row++)
}namedwindow("output image",cv_window_autosize);
imshow("output image",dst);
waitkey(0);
return 0;
}opencv自帶函式實現以上功能
函式呼叫filter2d功能
定義掩膜:mat kernel = (mat_(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
filter2d(src,dst,src.depth(),kernel);其中src與dst是mat型別變數,src.depth()表示位圖深度有32,24,8等。
注意:depth()不知道可以直接寫-1
**片段:(衡量程式執行時間)
mat kernel = (mat_(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
double t = (double)gettickcount();
filter2d(src,dst,src.depth(),kernel);
double timeconsume = ((double)gettickcount() - 5)/gettickfrequency();
cout<<"built filter2d time passes in seconds" 1.opencv實際上是在c 的基礎上增加的庫,本質上還是c 2.mat 乙個類,用來建立物件來儲存影象的資訊 3.namedwindow 新建乙個顯示視窗 5.cout 輸出到工作台 6.image.rows cols 影象的行數 列數 7.waitkey 0 等待使用者按鍵事件 8.median... 調整影象亮度和對比度 理論畫素變換 點操作 鄰域操作 區域 做影象的卷積,影象特徵提取,影象梯度計算,影象更深入模式匹配,模糊,平滑等 調整影象亮度和對比度屬於畫素變換 點操作 g i,j a f i,j p 其中a 0,p是增益變數 重要api mat new image mat zeros im... 影象的模糊 模糊原理 smooth blur是影象處理中最簡單和常用的操作之一 使用該操作的原因之一就為了給影象預處理時候減低雜訊 使用smooth blur操作器背後是數學的卷積計算 g i,j 求和 f i k,j i h k,i 通常這些卷積運算元計算都是線性操作,所以有叫線性濾波 假設有6x...opencv C 學習筆記
學習筆記 OpenCV C (三)
學習筆記 OpenCv C (四)