opencv学习历程2---- 常用数据结构

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;

// opencv一些重要的类的学习
int main()
{
	// 点类
	Point pt;
	pt.x = 10;
	pt.y = 30;
	cout << pt << endl;   // 可以直接输出

	// 矩形类
	Rect rect(10, 20, 10, 10);  // 起始点 + 长宽
	cout << rect << endl; 


	// Scalar  像素点   BGR格式
	Scalar scalar(0, 255, 0);
	
	// 区域类 Size 
	Size mysize(100, 400);
	cout << mysize << endl;


	// Mat类
	Mat img; // 无初始化的赋值

	Mat img1(200, 100, CV_8UC1);	// 200 * 100 单通道8位 无初始化值 
	imshow("img1", img1);
	Mat img2(Size(200, 100), CV_8UC1);	// 100 * 200 单通道8位 无初始化值 
	imshow("img2", img2);
	/* 要注意Size是宽 * 高  以上的两种的效果是相反的*/  



	Mat img3(200, 100, CV_8UC3);	// 200 * 100 3通道8位  无初始化值
	imshow("img3", img3);

	Mat img4(200, 100, CV_8UC3, Scalar(0, 255, 0));	// 200 * 100 3通道8位 绿色

	imshow("img4", img4);


	// 单通道的情况下scalar赋值一个就行。 赋三个值取第一个
	Mat img5(Size(200, 100), CV_8UC1, Scalar(0));	// 100 * 200 单通道8位 黑色
	imshow("img5", img5);



	// Mat的拷贝
	Mat src = imread("..\\..\\bin\\test.jpg");
	if (src.empty() == true) {
		cout << "读取失败" << endl;
		waitKey(0);
		return -2;
	}
	Mat copy1 = src;  // ①
	Mat copy2(src);   // ②
	// 其中①②都是指向原图像
	

	Mat copy3;
	src.copyTo(copy3);		 // ③
	Mat copy4 = src.clone(); // ④
	// 其中③和④则是拷贝到新的内存区域
	


	cvtColor(src, src, COLOR_BGR2HSV);
	imshow("src", src);
	imshow("copy1", copy1);
	imshow("copy2", copy2);
	imshow("copy3", copy3);
	imshow("copy4", copy4);



	waitKey(0);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值