OpenCV學習(一):圖片的讀取顯示以及鼠標點擊事件的設置

我的學習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計算機視覺編程攻略

相關文章
相關標籤/搜索