Opencv操作圖像的像素

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

//使用Mat的ptr 操作像素
int main()
{
    //加載圖片,3通道
    Mat img = imread("1.jpg");
    //獲取第20行的第20個像素點,3通道的圖像像素點類型爲Vec3b,單通道的像素類型爲uchar
    //ptr是一個函數模板,返回一個指針
    //typedef Vec<uchar, 3> Vec3b;
    Vec3b pix = img.ptr<Vec3b>(20)[20];
    //Vec3b *p = img.ptr<Vec3b>(20);
    //Vec3b pix = p[20];
    cout << "pix = " << pix << endl; //整體輸出
    printf("%d %d %d\n",pix[0],pix[1],pix[2]);//單個分量輸出

    //修改像素點的值:把從原點開始的100行100列置爲blue
    for (int i = 0; i < 100; ++i)
    {
        for (int j = 0; j < 100; ++j)
        {
            img.ptr<Vec3b>(i)[j] = Vec3b(255,0,0);
        }
    }

    imshow("1.jpg",img);
    imwrite("111.jpg",img);
    waitKey(0);
    destroyAllWindows();

    return 0;
}
  • 頭文件及庫

INCLUDEPATH += D:\Tools\opencv\opencv3.2_win_lib\install\include
LIBS += -LD:\Tools\opencv\opencv3.2_win_lib\install\x86\mingw\bin -lopencv_core320
-lopencv_highgui320 -lopencv_imgproc320 -lopencv_imgcodecs320

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章