OpenCV使用遇到的问题

图像翻转

The example scenarios of using the function are the following:

  • Vertical flipping of the image (flipCode == 0) to switch between top-left and bottom-left image origin. This is a typical operation in video processing on Microsoft Windows* OS.
  • Horizontal flipping of the image with the subsequent horizontal shift and absolute difference calculation to check for a vertical-axis symmetry (flipCode > 0).
  • Simultaneous horizontal and vertical flipping of the image with the subsequent shift and absolute difference calculation to check for a central symmetry (flipCode < 0).
  • Reversing the order of point arrays (flipCode > 0 or flipCode == 0).

简而言之,就是:
flipCode >0: 沿y轴翻转;==0: 沿x轴翻转; <0: x、y轴同时翻转 。图片中的坐标系,原点在左上角,向右为x轴,向下为y轴。
效果图如下:

  • x轴翻转

这里写图片描述

  • y轴翻转

这里写图片描述

  • x,y都翻转

这里写图片描述

图片旋转

transpose():相当于逆时针旋转90°,然后取镜像。效果如下:
这里写图片描述

顺时针旋转90°

1
2
3
transpose(img2, img2);
flip(img2, img3, 1);
imshow("先转置,再y轴翻转", img3);

这里写图片描述

顺时针旋转270°(逆时针旋转90°)

1
2
3
transpose(img2, img2);
flip(img2, img3, 0);
imshow("先转置,再x轴翻转", img3);

这里写图片描述

旋转180°

  • 方法1:

    1
    2
    3
    flip(img2, img3, 0);
    flip(img3, img3, 1);
    imshow("先x轴翻转,再y轴翻转", img3);

    这里写图片描述

  • 方法2:
    先顺时针旋转90°,再顺时针旋转90°。

遇到的错误

描述:
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat

在使用OpenCV的裁剪功能时,传入了cv::Rect,遇到如上错误。后来经过检查,错误来源自传给cv::Rect的四个参数。在JNI中获得的来自Java层的floag[]在转化过程中出现了错误,让原本的参数,变成了其它的莫名其妙的负数,致使如上错误出现。后面经过对参数的修正,错误就未出现了,裁剪图片成功。

大致理解,此错误来源自所需要裁剪的区域,应该是超过了原本图片大小。

Microsoft Visual Studio 2017配置OpenCV开发环境简要操作

参考博客:https://blog.csdn.net/sinat_36264666/article/details/73135823

有机会接触这个是因为公司的某个项目,有时候需要使用到OpenCV处理图片,在JNI层操作有诸多不便,还不如使用Visual Studio来进行相应操作的验证,得到的结果会更快更有说服力。Visual Studio是传说中的神器,说真的菜单还真看着有点不知道说什么,虽然都是汉字。配置这种东西,博客太多了,但是有一些是2015的或者更低,当然也有2017的。这里就做个简要的记录,多余的都删除。

下载并安装Visual Studio 2017

下载安装器后,选择安装。如果是第一次安装,可以先勾上这两个选项(从网上看到的操作,并且我之前没勾全了,配置好了也跑不起来);
这里写图片描述
如果是已经安装了,并且上图中的两个勾没选上的话,那么可以按照下述步骤去勾上并进行组件的安装。
控制面板->程序与应用->Visual Studio 2017->右键->修改

下载并安装OpenCV3.4.1

说是安装,其实是解压到某个地方,先记着这个地方

配置OpenCV环境变量

添加到环境变量后如下
这里写图片描述

新建项目并配置项目

我选了这“Windows控制台应用程序”
这里写图片描述
建立好了之后,配置项目中OpenCV相关信息。

  1. 打开属性管理窗口。操作路径为视图->其他窗口->属性管理窗口
  2. 在此配置Debug X64,操作右键->属性
    这里写图片描述
  3. 配置VC++目录
  • 包含目录
    包含目录

  • 库目录
    库目录

4.配置链接器->输入
这个名字中的数字表示OpenCV的版本号,此处我的版本号为3.4.1,后面的d表示为Debug。
附加依赖项

测试运行

1
2
3
4
5
6
7
8
9
10
11
// ConsoleApplication3.cpp: 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <opencv2/opencv.hpp>

int main()
{
cv::Mat img = cv::imread("C:\\Users\\xxxxxx\\Desktop\\1.png");
cv::imshow("测试", img);
cv::waitKey(0);
return 0;
}

这里写图片描述
前面配置的是Debug X64的,所以现在选择这个,运行后如下:
这里写图片描述