OpenCV 是 Intel 开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 拥有包括 300 多个 C 函数的跨平台的中、高层 API。它不依赖于其它的外部库 —— 尽管也可以使用某些外部库。OpenCV 对非商业应用和商业应用都是免费(FREE)的。
OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。 OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。 OpenCV-Python Tutorials是官方提供的文档,其内容全面、简单易懂,使得初学者能够快速上手使用。
任何情况下,我们(人类)看到的都是图像。然而,当将其转换到数字设备时,我们记录的是图像每个点的数值。
Mat类表示一个 n 维密集数值单通道或多通道数组,它可用于存储图像。
copyTo方法
image.copyTo(dist,mask);
原图片image经过mask掩膜生成目标图片dist,其中的三个参数都是Mat类型
imread方法
Mat image = Imgcodecs.imread(“F://all//1.jpg”);
读取一张图片,返回一个Mat类型
imWrite方法
根据Mat类型的图片,生成一张真实的图片
opencv的矩形区域裁剪
方式1:用Range
Mat img = Imgcodecs.imread(strFrom, Imgcodecs.IMREAD_UNCHANGED); //获取原图
// 选择ROI区域方式1,这两个参数代表x或y某一个方向上的起始位置和结束位置,单位是像素
// Range range = new Range(250, 800);
// Mat ROI1 = new Mat(anima, range);
// Imgcodecs.imwrite("C:\\Users\\Administrator\\Desktop\\temp\\station_11\\22.jpg", ROI1);
方式2:用Rect
//选择ROI区域方式2:矩形区域
Rect rect = new Rect(50, 50, 200, 250);
Mat ROI = new Mat(img, rect);
Imgcodecs.imwrite(strTo, ROI);
https://blog.csdn.net/antony1776/article/details/124226493
imgcodecs = image + codec,由名称可知,肯定与图像的编解码有关,opencv 通过该模块,能够完成:
http://t.zoukankan.com/mangoroom-p-10999151.html
Imgcodecs的imread方法,负责读取图像
可以看到,imread函数原型非常简单,可以总结为三点
参数1、参数2的具体取值参考链接
Imgcodecs的imencode方法,将图像编码到内存缓冲区中。
压缩图像,并将其存储在内存缓冲区中,该缓冲区的大小可根据需要进行调整
结果。有关支持的格式和标志说明的列表,请参阅cv::imwrite。
和imwrite方法的区别???
Imgcodecs类的imwrite()方法,该方法一个重要构造器如下:
imwrite(filePath, Mat):第一个参数为待写入的文件路径,第二个为Mat对象
Imgproc的fillPoly方法,填充多边形
有多个重载函数,这里就说明3个参数的fillPoly函数
fillPoly(Mat img, List pts, Scalar color)
例子
Imgproc.fillPoly(mask, maskArea, new Scalar(255, 255, 255));//填充多边形,mask,定义成白色
Mat中的成员方法,作用:将当前Mat对象复制到目标Mat对象中
//1.将当前对象复制到m中
public void copyTo(Mat m)
//2.将当前对象根据掩膜mask生成新的对象m
public void copyTo(Mat m,Mat mask)
其中m为待填充的对象
变量mask中非0的像素表示待复制的像素
使用:
A.CopyTo(B); // B 与 A 矩阵一模一样,改变任何一个,互不影响
A.CopyTo(B,M);// 把与M中非0像素,相同位置的A中像素copy到B中同一位置
// M 必须是CV_8U, 可以是单通道或多通道
前置
1. 下载Opencv的jar包2. 找到这个jar包的x64文件夹的路径,放到VM options中(或者将dll文件放到jdk的bin目录 中)
opencv-java官网:https://opencv-java-tutorials.readthedocs.io/en/latest/
opencv-py:http://www.woshicver.com/