码迷,mamicode.com
首页 > 其他好文 > 详细

图像处理基础

时间:2021-01-07 12:07:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:取反   ros   rate   color   osi   auto   mat   enc   inpu   

void test() {

    Mat src = imread("D:/opencvsp/pic.png");

    if (src.empty())

    {

         printf("could not load image\n");

         return -1;

    }

    namedWindow("test opencv setup", WINDOW_AUTOSIZE);

    imshow("test opencv setup", src);

    namedWindow("output windows", WINDOW_AUTOSIZE);

    Mat output_image;

    cvtColor(src, output_image, COLOR_BGR2HLS);///

    imshow("output windows", output_image);

 

    imwrite("D:/opencvsp/hsls.png", output_image);///

}

//提高对比度 矩阵的掩膜操作

 void test02(){

     Mat src, dst;

     src = imread("D:/opencvsp/pic.png");

     if (!src.data)

     {

          printf("could not load image\n");

          return -1;

     }

     namedWindow("intput image", 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 = 0; row < rows - 1; row++)

     {

          const uchar* previous = src.ptr<uchar>(row - 1);

          const uchar* current = src.ptr<uchar>(row);

          const uchar* next = src.ptr<uchar>(row + 1);

          uchar* output = dst.ptr<uchar>(row);

          for (int col = 0; col < cols; col++)

          {

              output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));

          }

     }

   

     

     Mat kernel = (Mat_<char>(3, 3) << 0,-1,0,-1,5,-1,0,-1,0 );

     filter2D(src,dst,src.depth(),kernel);/////提高对比度

     namedWindow("contrast image demo", WINDOW_AUTOSIZE);

     imshow("contrast image demo",dst);

 }

 

 void test03() {

     Mat src, dst;

     src = imread("D:/opencvsp/pic.png");

     namedWindow("input",WINDOW_AUTOSIZE);

     namedWindow("out",WINDOW_AUTOSIZE);

     cvtColor(src,dst,COLOR_BGR2GRAY);

     printf("input image channels: %d\n",src.channels());

     printf("out image channels: %d \n",dst.channels());

 

     dst = Mat(src.size(),src.type());

     dst = Scalar(127,0,255);

     const uchar* firstRow = dst.ptr<uchar>(0);

 

     Mat M(3, 3, CV_8UC3, Scalar(0, 0, 255));

 

     Mat m2 = Mat(2, 2, CV_8UC1);//

     Mat m22 = Mat::eye(2, 2, CV_8UC1);

     imshow("output",dst);

 } 

 

 void test04() {

      Mat src, gray_src;

     src = imread("D:/opencvsp/pic.png");

     if (src.empty())

     {

          std::cout << "could not load image" << std::endl;

          return -1;

     }

     namedWindow("input", WINDOW_AUTOSIZE);

     imshow("input", src);

 

     cvtColor(src, gray_src, COLOR_BGR2GRAY);

     namedWindow("output", WINDOW_AUTOSIZE);

     imshow("output", gray_src);

     int height = gray_src.rows;

     int width = gray_src.cols;

     //单通道

     for (int row = 0; row < height; row++)

     {

          for (int col = 0; col < width; col++)

          {

              int gray = gray_src.at<uchar>(row, col);

              gray_src.at<uchar>(row, col) = 255 - gray;

          }

     }

     namedWindow("gray_invert", WINDOW_AUTOSIZE);

     imshow("gray_invert", gray_src);

 

     Mat dst,dst2;

     src = imread("D:/opencvsp/pic.png");

     dst.create(src.size(), src.type());

     cvtColor(src, gray_src, COLOR_BGR2GRAY);

     namedWindow("output", WINDOW_AUTOSIZE);

     imshow("output", gray_src);

     int heightt = gray_src.rows;

     int widthh = gray_src.cols;

     int nc = src.channels();

     for (int row = 0; row < heightt; row++)

     {

          for (int col = 0; col < widthh; col++)

          {

              if (nc == 1)

              {

                  int gray = gray_src.at<uchar>(row, col);

                  gray_src.at<uchar>(row, col) = 255 - gray;

              }

              else

              {

                  int b = src.at<Vec3b>(row, col)[0];

                  int g = src.at<Vec3b>(row, col)[1];

                  int r = src.at<Vec3b>(row, col)[2];

                  dst.at<Vec3b>(row, col)[0] = 255 - b;

                  dst.at<Vec3b>(row, col)[1] = 255 - g;

                  dst.at<Vec3b>(row, col)[2] = 255 - r;

                  //灰度图

                  gray_src.at<uchar>(row, col) = max(r, max(b,g));

                  gray_src.at<uchar>(row, col) = min(r, min(b, g));

              }

              

          }

     }

     namedWindow("dst", WINDOW_AUTOSIZE);

     imshow("dst", dst);

     //取反像素

     bitwise_not(src, dst2);

     namedWindow("dstt", WINDOW_AUTOSIZE);

     imshow("dstt", dst2);

 

 

 }

图像处理基础

标签:取反   ros   rate   color   osi   auto   mat   enc   inpu   

原文地址:https://www.cnblogs.com/sundayvc/p/14232845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!