Opencv基础入门笔记01

opencv入门基础笔记01:利用opencv读取图片,修改图片大小以及保存图片

我们都知道,做笔记是十分有利于加深自己对知识的理解与掌握以及日后的复习!!!所以,我想记录自己学过的opencv基础,加深自己的理解以及方便以后自己复习或者发现新的知识点能补充。

环境介绍:vs2017,opencv3.4版本,python3.7.2,pycharm 社区版
我将用c++语言以及python实现相同的opencv知识点

1.相关函数介绍

imread
opencv是开源的视觉库,提供多种api供我们使用
imread是opencv给我们提供的用于读取图片的函数。
语法:
C++ #include Mat cv::imread ( const String & filename, int flags = IMREAD_COLOR )
pythonretval = cv.imread( filename[, flags] )
参数介绍:
1.c++与python imread函数里面的第一个参数是路径,分相对路径与绝对路径,这个概念就不赘述了。
2.第二个是可选参数,是一个读取标记,用于选择读取图片的方式,默认值为IMREAD_COLOR,flag值的设定与用什么颜色格式读取图片有关
3.函数返回值,返回值是图像Mat类
imread支持读取图片格式有(目前不支持GIF)
Windows bitmaps - .bmp, .dib (opencv版本基本支持)
JPEG files - .jpeg, .jpg, .jpe(应该是高一点的版本才支持)
JPEG 2000 files - *.jp2 (see the Note section)
Portable Network Graphics - *.png (see the Note section)
WebP - *.webp (see the Note section)
Portable image format - .pbm, .pgm, .ppm .pxm, *.pnm (基本都支持)
PFM files - *.pfm (see the Note section)
Sun rasters - .sr, .ras (基本都支持)
TIFF files - .tiff, .tif (see the Note section)
OpenEXR Image files - *.exr (see the Note section)
Radiance HDR - .hdr, .pic (基本都支持)
Raster and Vector geospatial data supported by GDAL (see the Note section)
Note

resize
正如函数的英语名表达的,这是修改图片大小的函数。

void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR ); 

python cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
src输入图像.dst输出图像(都是Mat类)
interpolation插值方法:
CV_INTER_NN - 最近邻插值,
CV_INTER_LINEAR - 双线性插值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法…
CV_INTER_CUBIC - 立方插值.
函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI(感兴趣区域),函数将按常规支持 ROI.
python中的fx, fy 沿x轴,y轴的缩放系数

imshow
这是opencv里的显示图片的api,使用也十分简单。
imshow函数
c++原型

#include //所在头文件
void cv::imshow (   const String &  winname,
InputArray  mat 
) 

Python:

None    =   cv.imshow(  winname, mat    )

第一个参数是窗口名字,如果之前没有定义则会自动创建。
第二个参数是要显示的图片名字。

!!!!!!!使用方法也非常简单,需要注意的一点就是,imshow之后必须有waitKey函数,否则显示窗内将一闪而过,不会驻留屏幕。

imwrite
这是一个用来保存图片的api
C++

bool imwrite(const string& filename, InputArray img, const vector& params=vector() )

Python

cv2.imwrite(filename, img[, params])

1、filename:需要写入的文件名,可以是路径下的,会自己创建(像imwrite(“1.jpeg”,src);这样)注意:你要保存图片为哪种格式,就带什么后缀。

2、img:要保存的图像

3、params 对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第 三个参数表示的是压缩级别。默认为3.

!!imwrite("*.jpg",frame);//将摄像头获取的图像帧frame保存到需要的位置。

代码演示

主要有:读取图片,修改图片大小,显示图片,保存图片。
C++实现:
1.读取,显示

Mat src_image,dst_image;
//char windowsname[] = { "img" };

int main() {
	//1.读取图片
	src_image = imread("E:\\360downloads\\img.jpg");
	//2.判断图片是否读入
	if (!src_image.data) {
		printf("can't load image ,please checkout your path!");
		return 0;
	}
	//3.修改图片大小

	imshow("src", src_image);
	//imshow("dst", dst_image);
	waitKey(0);
	return 0;
}

Opencv基础入门笔记01_第1张图片
2.修改大小并保存为jpg

Mat src_image,dst_image;
//char windowsname[] = { "img" };

int main() {
	//1.读取图片
	src_image = imread("E:\\360downloads\\img.jpg");
	//2.判断图片是否读入
	if (!src_image.data) {
		printf("can't load image ,please checkout your path!");
		return 0;
	}
	//3.修改图片大小
	resize(src_image, dst_image, Size(480, 320));
	//4显示
	imshow("src", src_image);
	imshow("dst", dst_image);
	//5保存
	imwrite("E:\\360downloads\\opencv基础入门01.jpg", dst_image);

	waitKey(0);
	return 0;
}

效果:
Opencv基础入门笔记01_第2张图片
保存文件如下图:
Opencv基础入门笔记01_第3张图片

C++完整代码

#include"pch.h"//必须在前面
#include 
#include 
#include

using namespace cv;
using namespace std;

Mat src_image,dst_image;
//char windowsname[] = { "img" };

int main() {
	//1.读取图片
	src_image = imread("E:\\360downloads\\img.jpg");
	//2.判断图片是否读入
	if (!src_image.data) {
		printf("can't load image ,please checkout your path!");
		return 0;
	}
	//3.修改图片大小
	resize(src_image, dst_image, Size(480, 320));
	//4显示
	imshow("src", src_image);
	imshow("dst", dst_image);
	//5保存
	imwrite("E:\\360downloads\\opencv基础入门01.jpg", dst_image);

	waitKey(0);
	return 0;
}

python实现

import cv2 as cv

# 1.读取图片
src_image = cv.imread("E:\\360downloads\\img.jpg")
# 2.判断图片是否读入
if src_image is None:
    print("can't load image ,please checkout your path!")
    exit(0)

# 3.修改图片大小
dst_image = cv.resize(src_image, (480, 320))
# 4显示
cv.imshow("src", src_image)
cv.imshow("dst", dst_image)
# 5保存
cv.imwrite("E:\\360downloads\\opencv基础入门01.jpg", dst_image)

cv.waitKey(0)

Opencv基础入门笔记01_第4张图片
可能写的有很多缺点,未完,待以后发现问题就更新!

一起学习,一起交流!

你可能感兴趣的:(#,opencv基础笔记,opencv,计算机视觉,python,c++)