zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    开源项目cmdbuild-搭建
    开源项目cmdbuild-寄语
    四 上下文切换
    withRouter的作用和一个简单应用
    封装react组件:显示五星评价
    简单使用 Easy Mock-创建线上伪数据
    react中避免内存泄漏的方法
    react中constructor和super的使用
    使用swiper设计移动端轮播图(https://www.swiper.com.cn/)
    vuex模块化练习-购物车
  • 原文地址:https://www.cnblogs.com/haiboxiaobai/p/11137990.html
Copyright © 2011-2022 走看看