OpenCV (一)图片读取、修改、保存

1.图片读取

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

using namespace cv;
using namespace std;

int main(int argc, char**argv) {
  cout << "Hello World" << endl;
  Mat src = imread("D:/Python/automotive/image/test.jpg");
  if (src.empty()) {
    cout << "Colud not load image..." << endl;
    return -1;
  }
  namedWindow("input image", WINDOW_AUTOSIZE);
  imshow("input image", src);

  waitKey(0);
  return 0;

}

imread(),加载图片成为一个Mat对象,有两个参数,第一个参数是图片位置,第二个参数设置读取图片的类型:

  IMREAD_UNCHANGED(<0):表示加载原图,不做任何改变

  IMREAD_GRAYSCALE(0):表示把原图作为灰度图片加载

  IMREAD_COLOR(>0):表示把原图作为RGB图像加载进来

namedWindow():创建一个OpenCV窗口,由OpenCV自动创建与释放,不需要销毁。

  WINDOW_AUTOSIZE:会自动根据图像大小,显示窗口的大小,不能人为改变窗口大小

  WINDOW_NORMAL:跟QT集成时候会使用,允许修改窗口大小

imshow():根据窗口名显示图像到指定的窗口上去,第一个参数是窗口名称,第二个参数是Mat对象

2.图片修改

cvtColor的功能是把图像从一个彩色空间转换到另一个彩色空间,有三个参数,第一个是加载的图像源,第二个是转换后的图像,第三个表示转换方法:

  方法有:

    CV_BGR2HLS、CV_BGR2GRAY等

用法:cvtColor(image, output_image, CV_BGR2GRAY);

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

using namespace cv;
using namespace std;

int main(int argc, char**argv) {
  cout << "Hello World" << endl;
  Mat image = imread("D:/Python/automotive/image/test.jpg");
  if (image.empty()) {
    cout << "Colud not load image..." << endl;
    return -1;
  }
  namedWindow("input image", WINDOW_AUTOSIZE);
  imshow("input image", image);

  namedWindow("output image", WINDOW_AUTOSIZE);
  Mat output_image;
  cvtColor(image, output_image, CV_BGR2GRAY);
  imshow("output image", output_image);
  waitKey(0);
  return 0;

}

3.图片保存:

imwrite():

  保存图片到指定目录,只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存,可以指定保存的格式为上面三种任意一种,只需在文件路径上加.jpg   .png。

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

using namespace cv;
using namespace std;

int main(int argc, char**argv) {
  cout << "Hello World" << endl;
  Mat image = imread("D:/Python/automotive/image/test.jpg");
  if (image.empty()) {
    cout << "Colud not load image..." << endl;
    return -1;
  }
  namedWindow("input image", WINDOW_AUTOSIZE);
  imshow("input image", image);

  namedWindow("output image", WINDOW_AUTOSIZE);
  Mat output_image;
  cvtColor(image, output_image, CV_BGR2GRAY);
  imshow("output image", output_image);
  imwrite("D:/OpenCVtest/output_img/test.tif", output_image);
  waitKey(0);
  return 0;

}

原文地址:https://www.cnblogs.com/haiboxiaobai/p/11137990.html