【OpenCV】图像对象的创建与赋值

文章目录

  • 图像对象的创建与赋值
    • 1.怎么操作mat
    • 2.怎么访问每一个像素点
    • 3.怎么创建一个空图或者mat
    • Mat基本结构
    • 完整代码

图像对象的创建与赋值

1.怎么操作mat

具体见下面代码详解

2.怎么访问每一个像素点

Scalar()函数

3.怎么创建一个空图或者mat

克隆、复制、初始化

Mat基本结构

【OpenCV】图像对象的创建与赋值_第1张图片

完整代码

#pragma once

#include 

using namespace cv;

class QuickDemo {
public:
	void colorSpace_Demo(Mat& image);//定义一个类,里面包含输入一个图片,对图片操作
	void mat_creation_demo(Mat& image);
	void pixel_visit_demo(Mat& image);
	void operators_demo(Mat& image);
	void tracking_bar_demo(Mat& image);
	void key_demo(Mat& image);
	void color_style_demo(Mat& image);
	void bitwise_demo(Mat& image);
	void channels_demo(Mat& image);
	void inrange_demo(Mat& image);
	void pixel_statistic_demo(Mat& image);
	void drawing_demo(Mat& image);
	void random_drawing();
	void polyline_drawing_demo();
	void mouse_drawing_demo(Mat& image);
	void norm_demo(Mat& image);
	void resize_demo(Mat& image);
	void flip_demo(Mat& image);
	void rotate_demo(Mat& image);
	void video_demo(Mat& image);
	void histogram_demo(Mat& image);
	void histogram_2d_demo(Mat& image);
	void histogram_eq_demo(Mat& image);
	void blur_demo(Mat& image);
	void gaussian_blur_demo(Mat& image);
	void bifilter_demo(Mat& image);
	void face_detection_demo();
};
void QuickDemo::mat_creation_demo(Mat& image)
{
	Mat m1, m2;
	//创建方法:克隆
	m1 = image.clone();
	//创建方法:复制
	image.copyTo(m2);

	//创建空白图像,ones&zeros是初始化的方法
	Mat m3 = Mat::ones(Size(8, 8), CV_8UC3);//创建8*8的CV8位的无符号的n通道的unsigned char
	
	m3 = Scalar(255, 0, 0);//直接给像素赋值,m3初始为蓝色
	
	//数据的宽度和长度是由通道数决定的。
	std::cout << "width:"<<m3.cols<<"height"<< m3.rows <<"channels"<<m3.channels()<< std::endl;//用来查看宽度,高度与通道数。
	std::cout << m3 << std::endl;
	
	Mat m4 = m3.clone();
	//赋值M4就是M3 M4改变了,M3也改变了,没有产生新的自我(M4与M3同体)
	//M4为M3的克隆,M3还是原来的颜色,不会改变。(M4与M3不同体,各自是各自的颜色)
	m3.copyTo(m4);//把M3赋值给M4,M4就是蓝色
	//m4 = Scalar(0, 255, 255);
	//改变m4的颜色为黄色 ,m4也改变
	namedWindow("图像3", WINDOW_FREERATIO);
	imshow("图像3", m3);//标题和图像名称   显示图像m3 纯蓝色
	imshow("图像4", m4);//标题和图像名称

	//在卷积操作中,经常这样创建
	//Mat kernel =(Mat_(3,3)<<0,-1,0,-1,4,-1,0,-1,0);
}
#include 
#include "quickdemo.h"
#include 
using namespace std;
using namespace cv;
int main(int argc,char** argv)
{
    Mat src = imread("E:\\image\\timg.jpg");
    if (src.empty())
    {
        printf("could not load image...");
        return -1;
    }
    namedWindow("input",WINDOW_FREERATIO);
    imshow("input", src);
    QuickDemo qd;
    qd.mat_creation_demo(src);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

通过创建新的Mat对象来创建用户的特定的底色画布,创建图像的基本类型有两种一种是ones一种是zeros,ones()中的第一个参数代表图像的大小,第二个参数代表创建几维的图像,UC代表无符号字符型,数组3代表通道数。克隆和赋值的区别,克隆就是产生一个新的对象,新对象改变属性,旧对象属性不变(各自为政)。赋值是二者同体,当新属性发生改变,旧属性也发生改变(二者同体)。

你可能感兴趣的:(OpenCV,opencv,人工智能,计算机视觉)