opencv1——读图并显示

图像需放在工程内的解决方案文件夹内,或者在读取的时候使用绝对路径如D:\code\CV\CV\1.png

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
void main()
{
	Mat x = imread("1.png");
	imshow("1", x);
	waitKey(0);
}

using namespace cv
使用命名空间cv。其后的函数imread和imshow都是在cv内。
imread(“图像路径”,a):
a=1,读入彩色图像(默认)
a=0,读入灰度图像
waitKey(0)
无限延时,直到按下
waitKey(1000)
延时1000ms
imshow(“窗口内容”,图像矩阵)


void main()
{
	Mat x(300,200,CV_8UC3,Scalar(0,0,255));
	imshow("1", x);
	waitKey(0);
}

此代码,初始化一个300行,200列的三维矩阵。由于Opencv中像素的默认存储方式是BGR,故Scalar(0,0,255)表示的是R=255,G=0,B=0的像素,矩阵的所有像素都是它。故最终结果是一副全红图像
Mat::Mat(int rows, int cols, int type, const Scalar& s)
创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始
化为值s。
CV_8UC3
8U——8位无符号整形
C3——3通道图像


Mat roi = img(Rect(距左, 距上,,));

用Rect进行图像裁剪


#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
void main()
{
	Mat logo=imread("2.png");
	Mat img = imread("1.png");
	Mat roi = img(Rect(100, 200, 150, 150));
	addWeighted(roi, 0.5, logo, 0.5,1,roi);
	imshow("3", img);
	waitKey(0);
}

知识点:opencv中,不同的Mat变量会共用同一个图像矩阵。
addWeighted(roi, 0.5, logo, 0.5,1,roi)
addWeighted只能进行同样尺寸的图像融合
第一个roi和logo,及2个0.5,表示要融合图像矩阵及其权重。
而roi表示的是大图中的一个小区域,由于roi和img共用图像矩阵,所以对roi操作实际就是操作了img中的那一小块,这就可以实现用addWeighted对不同大小的图像融合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值