【OpenCV】图像基本操作

文章目录

    • 图像读取与显示
    • 图像色彩空间转换
    • 创建空白图像并赋值

图像读取与显示

  • imread:图像读取(路径+图像属性)
  • imshow:图像显示(窗口名+图像对象)
  • namedWindow:定义窗口属性(窗口名+窗口类型)

示例:

#include 
#include 

using namespace cv;
using namespace std;

int main()
{
	//Mat src = imread("D:/images/test.png",IMREAD_GRAYSCALE);
	Mat src = imread("D:/images/test.png");
	// 判断图像是否存在
	if (src.empty())
	{
		printf("could not load image!");
		return -1;
	}
	namedWindow("Display", WINDOW_FREERATIO);
	imshow("Display", src);
	waitKey(0);
	destroyAllWindows();
	return 0;
}

图像色彩空间转换

  • cvtColor:色彩空间转换函数(灰度、彩色、HSV)
  • imwrite:图像保存函数(保存路径,图像对象)

首先,创建一个类QuickDemo来定义色彩之间的转换函数;

quickdemo.h
#pragma once

#include 
using namespace cv;

class QuickDemo {
	public:
		void colorSpace_Demo(Mat &image);
};
quickdemo.cpp
#include 

void QuickDemo::colorSpace_Demo(Mat &image) {
	Mat gray, hsv;
	cvtColor(image, hsv, COLOR_BGR2HSV);	//H 0~180,S V 0~255 颜色和亮度
	cvtColor(image, gray, COLOR_BGR2GRAY);
	imshow("HSV", hsv);
	imshow("GRAY", gray);
	imwrite("D:/source/images/hsv.png", hsv);
	imwrite("D:/source/images/gray.png", gray);
}
main.cpp
// opencv454学习

#include 
#include 
#include 

using namespace cv;
using namespace std;

int main()
{
	//Mat src = imread("D:/images/test.png",IMREAD_GRAYSCALE);
	Mat src = imread("D:/source/images/test.png");
	// 判断图像是否存在
	if (src.empty())
	{
		printf("could not load image!");
		return -1;
	}
	//namedWindow("Display", WINDOW_FREERATIO);
	imshow("Display", src);

	QuickDemo qd;	//定义qd对象
	qd.colorSpace_Demo(src);	//转换hsv和gray
	waitKey(0);
	destroyAllWindows();
	return 0;
}

最后显示并保存图像如下:

【OpenCV】图像基本操作_第1张图片

创建空白图像并赋值

  • Mat::zeros:空白图像(大小+通道数)
  • Scalar:赋值(BGR)

下面创建一个类mat_creation_demo;

void QuickDemo::mat_creation_demo(Mat &image) {
	//Mat m1, m2;
	//m1 = image.clone();	//拷贝1
	//image.copyTo(m2);	//拷贝2

	// 创建空白图像
	Mat m3 = Mat::zeros(Size(400,400), CV_8UC3);	//8uc1无符号8位,通道1
	m3 = Scalar(255, 0, 0);	// 赋值 B G R
	std::cout << m3 << std::endl;
	imshow("m3图像", m3);	//以上就创建了一个纯蓝色图像
}

在main函数中调用:

	QuickDemo qd;
	//qd.colorSpace_Demo(src);	//转换hsv和gray
	qd.mat_creation_demo(src);

生成效果如下:

【OpenCV】图像基本操作_第2张图片

以上。

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