OpenCV(C++)入门(一)

一、基础部分

OpenCV库分为多个模块:opencv_core模块包含库的核心功能,opencv_imgproc模块包含主要的图像处理函数,opencv_highgui模块提供了读写图像和视频的函数以及一些用户交互函数等。

#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

基本实现代码

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
cv::Mat image = cv::imread(“png”);
cv::namedWindow(“图片窗口”);
cv::imshow(“图片窗口”,image);
cv::waitKey(0);//0代表永远等待按键,正数表示等待的毫秒数;
cv::imwrite(“png”,result);//保存结果

基本步骤

  1. 创建Mat对象;

  1. 读取地址,赋值给Mat对象;

  1. 操作图像数据;

  1. 显示图片;

5.调用waitKey();显示模式。

基本函数备注

1、创建图片对象:Mat image;

2、读取图像:imread(filename,flags);//IMREAS_GRAYSCALE;IMREAD_COLOR;

3、翻转图像:flip(image,result,flipCode);//正数表示水平;0表示垂直;负数表示水平和垂直。

4、显示图像:imshow(“winname”,image);

5、显示模式:waitKey();//0等待按钮,正数表示等待毫秒数。

6、写入图像:imwrite(filename,image)

7、setMouseCallback(winname,function,reinterpret_cast<void*>(ℑ));

8、画圆:circle(image,Point(x,y),radius,color,thickness);

9、绘字:putText(image,text,Point,fontFace,fontScale,color,thickness)

二、输入了解cv::Mat

Mat有两个必不可少的组成部分:一个头部和一个数据块;1、头部包含了矩阵的所有相关信息(大小、通道数量、数据类型等);2、数据块包含了图像中所有像素的值;

  1. Mat image1(240,320,CV_8U,100);//创建一个240*320的新图像;

  1. Mat image2(240,320,CV_8UC3,cv::Scalar(0,0,255));//Scalar数据结构用于传递像素值。灰度图也可以使用cv::Scalar(100);

  1. Mat image3(cv::Size(320,240),cv_8UC3);//C::Size(320,240);//Size数据结构定理了高度和宽度;

  1. 获取长和宽:属性cols和rows;

  1. create方法分配或重新分配图像的数据块。如果新的尺寸和类型与原来的相同,不会重新分配内存。result.create(image.size(),CV_8U,cv::Scalar());

  1. 当在两幅图像之间赋值时,图像数据不会被复制,两幅图指向同一个内存块。cv::Mat image4(image3)

  1. image3.copyTo(image2);image5 = image3.clone();深拷贝。

image1.convertTo(image2,CV_32F,1/255.0,0.0);//转换为浮点型图像[0,1]

注:CV_8U是OpenCV的数据格式,8为8位,u为unsigned;CV_8UC3,是3通道。

三、定义感兴趣区域

ROI(Region of Insterest)

cv::Mat imageRoi(image,cv::Rect(start,end,cols,rows));
logo.copyTo(imageROI);//插入标志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值