opencv3 学习 三

Posted tomding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv3 学习 三相关的知识,希望对你有一定的参考价值。

程序如下

#include "opencv2/opencv.hpp"
using namespace cv;

int main()
{
    Mat file1 = imread("girl.jpg",CV_LOAD_IMAGE_UNCHANGED);
    Mat file2 = imread("girl.jpg", CV_LOAD_IMAGE_GRAYSCALE);

    
    namedWindow("Color", CV_WINDOW_FREERATIO);
    namedWindow("Fixed", CV_WINDOW_AUTOSIZE);


    imshow("Color", file1);
    imshow("Fixed", file2);


    resizeWindow("Color", file1.cols / 2, file1.rows / 2);
    resizeWindow("Fixed", file2.cols / 2, file2.rows / 2);

    moveWindow("Color", 600, 400);
    moveWindow("Fixed", 600 + file1.cols + 5, 400);

    waitKey(0);
}

运行结果如下:
技术分享图片

图片中的这把尺是测量图片像素的,不是图片本身。

1. imread函数,读取图片

函数原型:

Mat imread(const String& filename, int flag = CV_LOAD_IMAGE_COLOR)

参数说明:

  1. filename: 待打开图片的文件名,支持常见的图片格式
  2. flag: 这里只简单说明例子中用到的二个参数
    • CV_LOAD_IMAGE_UNCHANGED: 不进行转化,以原有图片的格式读取
    • CV_LOAD_IMAGE_GRAYSCALE: 转化为灰度图,类型为CV_8UC1

通过调试器,我们可以看到本例中,file1 = {UINT8, 3 x 389 x 292},
file2 = {UINT8, 1 x 389 x 292}。这里选择file1作为说明,其中:
file1.cols = 389, 表示图片水平方向
file1.rows = 292, 表示图片的垂直方向
file1.channels = 3, 表示图片的通道数

2. namedWindow函数, 生成一个窗口

函数原型如下:

void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)

参数说明:

  1. winname: 窗口标识符,也就是窗口的名字,见图片中的 Color, Fixed 等
  2. flags: 窗口的类型
    • CV_WINDOW_FREERATIO, 窗口自适应图片大小,可以窗口用鼠标调整大小
    • CV_WINDOW_AUTOSIZE, 窗口自适应图片大小,但窗口不能通过鼠标调整大小

3. imshow函数,显示图片

函数原型:

void imshow(const String& winname, InputArray mat)

参数说明:

  1. winname: 显示窗口的名字
  2. mat: 待显示的图像

4. resizedWindow函数,调整窗口的大小

函数原型:

void resizeWindow(const String& winname, int width, int height)

参数说明:

  1. winname: 指定调整窗口的名字
  2. width: 新窗口的宽度
  3. height: 新窗口的高度

注意:对于namedWindow函数,选用 CV_WINDOW_AUTOSIZE 参数,如果width和height小于原图片,那么调整后的图片是不能全部显示图片。Fixed 和 Color 图中区别很明显。

4. moveWindow函数,移动窗口

函数原型:

void moveWindow(const String& winname, int x, int y)

函数说明:

  1. winname: 移动窗口的名字
  2. x: 窗口左边到屏幕左边的距离,单位为像素
  3. y: 窗口上边到屏幕上边的距离,单位为像素

本例中,Fixed 相对于 Color 右移了 file1.cols + 5 个像素,file1.cols = 389, 从图片中的标尺可以看到,正好 394 个像素。注意都是以窗口的左侧边框为基准。






以上是关于opencv3 学习 三的主要内容,如果未能解决你的问题,请参考以下文章

日常Geetest滑动验证码(三代canvas版)处理小结(以B站登录验证为例)

[从零开始学习FPGA编程-47]:视野篇 - 第三代半导体技术现状与发展趋势

opencv3 学习 一

OpenCV3学习笔记整理(一期)

OpenCV3.3 深度学习模块-对象检测演示

python opencv3 给图片加中文