OpenCV(二) 图像编程入门

OpenCV(二)

如何用C++控制图像

1.OpenCV库的常用模块

  • “core.hpp”包含程序库的核心功能,特别是基本的数据结构和算法函数
  • “highgui.hpp”包含图像、视频读写函数和部分用户界面函数

2.装载、显示和存储图像


    #include <cv.h>
    #include <highgui.hpp>
    #include <core.hpp>
    #include <iostream>

using namespace std;
using namespace cv;
    int main()
    {

      Mat image;
      image = imread("/home/elephantameler/yang.jpg");//创建一个Mat类型并赋予图像,“其中填绝对路径”
      namedWindow("Original Image");//命名对话框的名字
      imshow("Original Image",image);//将对话框名字赋予image,并打开此图像
      waitKey(0);//打开图像
      return 0;
    }

Original Image


    #include <cv.h>
    #include <highgui.hpp>
    #include <core.hpp>
    #include <iostream>

using namespace std;
using namespace cv;
    int main()
    {

      Mat image;
      image = imread("/home/elephantameler/yang.jpg",CV_LOAD_IMAGE_GRAYSCALE);
      namedWindow("Original Image");
      imshow("Original Image",image);

      Mat result;
      flip(image,result,1);//flip:图像转换函数
      /*
      正数表示对称翻转
      0表示90度翻转
      负数表示90度翻转+对称翻转
      */
      namedWindow("Output Image");
      imshow("Output Image",result);

      imwrite("/home/elephantameler/yang2.jpg",result);//j将result保存至此路径,并按yang2.jpg保存

      waitKey(0);
    }

这里写图片描述


    #include <cv.h>
    #include <highgui.hpp>
    #include <core.hpp>
    #include <iostream>

using namespace std;
using namespace cv;
    int main()
    {

      Mat image;
      image = imread("/home/elephantameler/yang.jpg",CV_LOAD_IMAGE_GRAYSCALE);

      circle(image,Point(50,50),50,0,3);
      /*在图像上绘制形状
      circle(目标图像,中心点坐标,半径,颜色,厚度);
      此外还有cilcle,ellipse,line,rectangle方法
      */
      putText(image,"She is YM",Point(0,100),FONT_HERSHEY_PLAIN,2.0,255,2);
      /*在图像上写入文本
      putText(目标图像,文本,文本位置,字体类型,字体大小,字体颜色,文本厚度);

      */

      namedWindow("Original Image");
      imshow("Original Image",image);


      waitKey(0);
    }

这里写图片描述
3.如何在图像中插入另一个图像
定义一个ROI :region of interest(兴趣区域)的Mat对象

    #include <cv.h>
    #include <highgui.hpp>
    #include <core.hpp>
    #include <iostream>

using namespace std;
using namespace cv;

    int main()
    {
    Mat image;
    image = imread("/home/elephantameler/China.jpg");

    Mat logo = Mat(50,90,CV_8UC3,Scalar(255,0,0));
//Method.1
    Mat imageROI(image,Rect(image.cols-logo.cols,image.rows-logo.rows,logo.cols,logo.rows));
    /*Method.2
      Mat imageROI = image(Range(image.rows-logo.rows,image.rows)),
      Range(image.cols-logo.cols,image.cols));
    */
    /*Method.3
      Mat imageROI;
      imageROI = image.rowRange(image.rows-logo.rows,image.rows);
      imageROI = image.colRange(image.cols-logo.cols,image.cols);
    */
    logo.copyTo(imageROI);
    imshow("ROI",image);
    waitKey(0);
      return 0;
    }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值