C++进行简单的图像处理

目录

前言

一、读取,显示和保存

二、图像变换

1.显示灰度图

2.显示HSV图

3.高斯模糊

4.图片缩放

三、遍历图像


前言

本文中介绍了用opencv处理图像的一些简单方法,并给出了代码。

一、读取,显示和保存

#include
#include
#include
#include
#include
#include 
using namespace cv;
using namespace std;

int main() {
	String str = "E:/photo/1.jpg"; // 文件路径
	Mat image = imread(str);//读取图像
	Mat image_gray;
	Mat imgBlur;
	imshow("test_BGR", image);//显示原图
    imwrite("E:/photo/2.jpg", image);//保存图像
	waitKey(0);
	return 0;
}

        waitKey(0)的作用是令窗口一直显示当前图像。  

         显示效果如下:

二、图像变换

1.显示灰度图

        cvtcolor是opencv给出的图像变换函数,括号中第一个参数为需要变换的图像,第二个参数为变换之后的图像,第三个参数为变换的方式。下列代码中第三个参数为COLOR_BGR2GRAY,即将BGR图像转换为灰度图。

//显示灰度图
cvtColor(image, image_gray, COLOR_BGR2GRAY);//将图片转换为灰度图
imshow("test_gray", image_gray);//显示灰度图

        显示效果如下:

2.显示HSV图

        HSV是图像处理中常用的色彩空间,HSV分别指的是色相/饱和度/明度(Hue, Saturation, Value)。与转换为灰度图相近,代码如下:

//转换为HSV
cvtColor(image, image_gray, COLOR_BGR2HSV);//将图片转换为HSV图
imshow("test_HSV", image_gray);//显示HSV图

        显示效果如下:

3.高斯模糊

        对于高斯模糊(高斯平滑)此处不再赘述。下列代码中的size(9,9)是高斯内核的大小,宽和高可以不一致,但需要都是正奇数 。代码如下:

//高斯模糊
GaussianBlur(image, imgBlur, Size(9, 9), 3, 0);
imshow("test_Blur",imgBlur);//显示高斯模糊图

        显示效果如下: 

4.图片缩放

        使用resize函数对图像进行缩放有两种方式。一种是按照比例对图像进行缩放,另一种是按照自定义的大小对图像进行缩放。

        第一种,按照比例将图像的长宽均缩放到原来的0.5倍,代码如下:

//按比例调整图像大小
resize(image, image_resize_ratio, Size(), 0.5, 0.5);
imshow("test_resize_ratio", image_resize_ratio);//显示缩放后的图

        第二种,按照自定义的大小将图像缩放600x600,代码如下:

//自定义调整图像大小
resize(image, image_resize, Size(600,600));
imshow("test_resize", image_resize);//显示缩放后的图

         两种方法的显示效果如下:

        原图的大小为800x800,所以第一种方法缩放之后的大小为400x400,上图中最左侧为原图。 

三、遍历图像

        这里仅展示一种较为简单的方法:用opencv的at成员函数访问图像数据,代码如下:

//遍历图像
for (size_t r = 0; r < image.rows; r++)//行
	for (size_t c = 0; c < image.cols; c++)//列
	{
		cv::Vec3b& bgr = image.at(r, c);
		bgr[1] = 0;
	}
imshow("test_1=0",image);

        上述代码将图像中每一个像素点内的第二位数置为0,效果如下: 

         访问图像数据的方法有很多,还可以用指针的方法进行访问。

你可能感兴趣的:(图像处理,opencv,计算机视觉,c++)