OpenCV 学习笔记-day10 图像像素的逻辑操作 (Opencv中rectangle函数与Rect函数的用法以及位相关操作)

day10-图像像素的逻辑操作

1. 画矩形

函数

  1. rectangle();

函数是用来绘制一个矩形(框)的,通常用在图片的标记上

//定义1
CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2,
                          const Scalar& color, int thickness = 1,
                          int lineType = LINE_8, int shift = 0);
参数说明
img被处理的图像
pt1绘制矩形的左上点坐标
pt2绘制矩形的右下点坐标
color颜色 Scalar(255,255,0)
thickness矩形框的线条宽度 详看#FILLED
lineType线型 默认 LINE_8, 详看#LineTypes
shift移位点坐标中的小数位数

例1
rectangle(img2, Point(j,i), Point(j + img4.cols, i + img4.rows), Scalar(255, 255, 0), 2, 8);

//定义2
CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec,
const Scalar& color, int thickness = 1,int lineType = LINE_8, 
int shift = 0);

参数说明
1.

参数说明
img被处理的图像
recRect()函数
color颜色 Scalar(255,255,0)
thickness矩形框的线条宽度
lineType线型 默认 LINE_8, 详看#FILLED
shift移位点坐标中的小数位数
  1. Rect()函数是画出图像中的矩形

Rect()(int x, int y, int width, int height);
参数含义:
Rect(左上角x坐标 , 左上角y坐标,矩形的宽,矩形的高)

例2

rectangle(m1,Rect(100,100,80,80),Scalar(255,255,0),-1,LINE_8,0);

例3

Rect(100,100,80,80);//左上角坐标 x,y(100,100) 
//size 80*80

补充:

//如果创建一个Rect对象rect(100, 50, 50, 100),那么rect会有以下几个功能:  
rect.area();     //返回rect的面积 5000  
rect.size();     //返回rect的尺寸 [50 × 100]  
rect.tl();       //返回rect的左上顶点的坐标 [100, 50]  
rect.br();       //返回rect的右下顶点的坐标 [150, 150]  
rect.width();    //返回rect的宽度 50  
rect.height();   //返回rect的高度 100  
rect.contains(Point(x, y));  //返回布尔变量,判断rect是否包含Point(x, y)点  
  
//还可以求两个矩形的交集和并集  
rect = rect1 & rect2;  
rect = rect1 | rect2;  
  
//还可以对矩形进行平移和缩放    
rect = rect + Point(-100, 100); //平移,也就是左上顶点的x坐标-100,y坐标+100  
rect = rect + Size(-100, 100);  //缩放,左上顶点不变,宽度-100,高度+100  
  
//还可以对矩形进行对比,返回布尔变量  
rect1 == rect2;  
rect1 != rect2; 

2. 位操作

函数

  1. bitwise_and(m1, m2, dst);//与
  2. bitwise_or(m1, m2, dst);//或
  3. bitwise_not(m1,dst);//非 取反操作
  4. bitwise_xor(m1,m2,dst);//异或

代码

quickopencv.h

#pragma once

#include <opencv2\highgui.hpp>

#include <opencv2\imgproc.hpp>

using namespace cv;
//定义类
class QuickDemo{
public:
	void colorSpace_Demo(Mat &image);//色彩空间转换函数2021-12-24
	void mat_creation_demo(Mat &image);//Mat对象与创建2021-12-27
	void pixel_vist_Demo(Mat &image);//图像像素的读写操作2022-1-3
	void operators_demo(Mat &image);//图像像素的算数操作2022-1-4
	void tracking_bar_demo(Mat &image);//滚动条操作演示2022-1-7
	void key_demo(Mat &image);//键盘响应操作2022-1-12
	void color_style_demo(Mat &image);//OpenCV自带颜色表操作2022-1-12
	void bitwise_demo(Mat &image);//位操作(逻辑操作)2022-1-17
};

QuickDemo.cpp

#include <opencv2\highgui.hpp>

#include <opencv2\imgproc.hpp>

#include<quickopencv.h>

#include <iostream>

void QuickDemo::bitwise_demo(Mat &image)
{
	//画矩形
	Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
	Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
	rectangle(m1,Rect(100,100,80,80),Scalar(255,255,0),-1,LINE_8,0);
	rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);
	imshow("m1", m1);//显示结果1
	imshow("m2", m2);//显示结果2
	//位操作
	Mat dst;
	//bitwise_and(m1, m2, dst);//与
	//显示结果3
	//bitwise_or(m1, m2, dst);//或
	//显示结果4
	//bitwise_not(m1,dst);//非 取反操作
	//显示结果5
	bitwise_xor(m1,m2,dst);//异或
	//显示结果6
	imshow("像素位操作", dst);
}

OpencvTest.cpp

#include <iostream>
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
#include<quickopencv.h>

using namespace cv;
using namespace std;


int main()
{
	QuickDemo qd;
	qd.bitwise_demo(scr);
	waitKey(0);
	return 0;
}

显示效果

显示结果1
矩形绘制m1
显示结果2
矩形绘制m2
显示结果3
m1m2与
显示结果4
m1m2或
显示结果5
m1取非
显示结果6
m1m2异或

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值