我的學習OpenCV時的筆記,爲方便各位網友及本人本身查閱,現作出以下記錄:ios
直接上代碼:編程
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>函數
#include <iostream>學習
using namespace std;
using namespace cv;字體
// 提早聲明須要調用的方法
void onMouse(int event, int x, int y, int flgs, void* param);ui
int main(int atgc, char *argv[]){spa
cv::Mat image; // 建立一個空圖像
std::cout << "This image is " << image.rows << " x " << image.cols << std::endl;three
image = cv::imread("E:/earth.jpg"); // 讀取圖像
if (image.empty()){
cout << "read image error!" << endl;
return 0;
}圖片
// 翻轉圖像的例子
Mat flipImage;
flip(image, flipImage, 1); // 正數表示水平, 0表示垂直, 負數表示水平和垂直ip
// 文件的讀寫操做
//imwrite("E:/flipImage.jpg", flipImage);
// 讀取一個圖片而且轉換成灰度圖像
Mat grayImage = imread("E:/earth.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat threeChannel = imread("E:/earth.jpg", CV_LOAD_IMAGE_COLOR);
cout << "All channels :" << threeChannel.channels() << endl;
// 在圖像上畫圖形或者寫文字
circle(image,
Point(122, 110), // 圓的中心
65, // 半徑
0, // 顏色
3); // 厚度
putText(image,
"This is a picture",
Point(40, 40),
cv::FONT_HERSHEY_PLAIN, // 字體類型
2.0, // 字體大小
255, // 字體顏色
2 // 文本厚度
);
//// 圖像顯示
cvNamedWindow("pic", CV_WINDOW_AUTOSIZE);
imshow("pic", image);
cvNamedWindow("pic1", CV_WINDOW_AUTOSIZE);
imshow("pic1", flipImage);
// 鼠標點擊時間判別
setMouseCallback("pic", onMouse, reinterpret_cast<void*>(&image));
waitKey(0);
return 0;
}
// 方法實現
void onMouse(int event, int x, int y, int flgs, void* param){
Mat *im = reinterpret_cast<Mat*>(param);
switch (event)
{
case CV_EVENT_LBUTTONDOWN: // 鼠標左鍵按下時間的觸發回調函數
cout <<"at (" << x << "," << y <<") value is:" << static_cast<int>(im->at<uchar>(Point(x, y))) << endl;
break;
}
}
參考:OpenCV計算機視覺編程攻略