opencv3学习笔记1--图像的基本操作

图像读取imread()

窗口创建namedWindow()

图像显示imshow()

图像保存imwrite()

资源释放destroyWindow()

坐标表示Point(x,y)    Point pt; pt.x=20,pt.y=20;

Rect 类 成员有x,y,width,height。 Size()返回值Size表示大小,area()返回矩形面积,contains(Point)判断点是否在矩形内 Inside(Rect)判断矩形是否在该矩形内,tr()返回左上角坐标,br()返回右下角坐标

判断连个矩形是否相交 Rect rect =rect1 &rect2  , Rect rect = rect1 | rect2

Size表示区域的大小,常用构造函数Size(int _width, int _height)

Scalar()表示具有四个元素的数组,大量用来传递像素值,如RGB颜色,一般形式Scalar(double B, double G , double R , double Alpha),颜色顺序为BGR,最后一个是透明度


Mat类 (rows,cols,channels,data)data是指向数据块的指针

判断图像是否加载  if (! img.data) //图像数据为空  return; <=> if (img.empty())

Mat img1(100,200,CV_8UC1) <=> Mat img2(Size(200,100),CV_8UC1);  创建100行200列的图像,相当于200×100的图像,需要注意

图像的赋值与拷贝

赋值(共用一个内存空间,任意一个改变都会改变):Mat img = imread("0.jpg");       Mat img2(img);   Mat img3 = img;

拷贝(原图像的副本): Mat img4 = img.clone();    Mat img5; img.copyTo(img5);

常用的颜色空间: COLOR_BGR2GRAY COLOR_BGR2LAB    COLOR_BGR2HSV

彩色直方图均衡化,效果一般

 Mat mat = imread("0.jpg");
    Mat mergeImg;//合并后的图像
    //用来存储各通道图片的向量
    vector<Mat> splitBGR(mat.channels());
    //分割通道,存储到splitBGR中
    split(mat,splitBGR);
    //对各个通道分别进行直方图均衡化
    for(int i=0; i<mat.channels(); i++)
        equalizeHist(splitBGR[i],splitBGR[i]);
    //合并通道
    merge(splitBGR,mergeImg);
双边滤波
namedWindow("双边滤波", 1);
Mat dstImg1;
bilateralFilter(src, dstImg1, 25, 200, 2.0);

获取视频

先定义一个VideoCapture cap("1.avi") ;  获取视频帧率Fps=cap.get(CV_CAP_PROP_FPS);  (返回double类型) 格式化字符串sprintf ( strFps, "Fps:%1.0f/s", Fps);

在视频帧上输出文字putText(frame, strFps, Point(5,30), CV_FONT_HERSHEY_COMPLEX_SMALL,1,Scalar(0,255,0),1,8);

Esc跳出循环 if(27==waitKey(1000/Fps)) break;

int FrameCount = cap.get(CV_CAP_PROP_FRAME_COUNT);//获取总帧数




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值