OpenCV

title:OpenCV
time:2019年9月7日09:46:56


OpenCV基础1:

介绍

  • 是计算机视觉开源库,主要算法设计图像处理和机器学习相关方法。
  • 在多数图像相关的应用程序中被采用个,BSD许可,可以免费应用在商业和研究领域
  • 目前SDK支持语言:Java、Python、IOS和Android
  • 其他Matlab、Halcon

配置

  • 参考

  • 添加系统变量path:D:\Microsoft\opencv\build\x64\vc15\bin

  • 把opencv\build\x64\vc15\bin中几个应用程序扩展全都放进window/sysWOW64和system32中

  • 项目属性管理器中x64中右键

  • vc++目录中包含目录

    • D:\Microsoft\opencv\build\include\opencv2
    • D:\Microsoft\opencv\build\include
  • 库目录

    • D:\Microsoft\opencv\build\x64\vc15\lib
  • 链接器中

    • opencv_world411d.lib

番茄工具的使用

加载、修改、保存图像

  • 加载图像(cv::imread)

    • 加载图像文件成为一个Mat对象,

    • 第一个参数是图像文件名称

    • 表示加载的图像是什么类型,支持常见的三个参数值

      • IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变
      • IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来
      • IMREAD_COLOR(>O)表示把原图作为RGB图像加载进来
    • 注意:支持JPG、PNG、TIFF等常见格式图像文件加载

  • 显示图像(cv::namedWindos与cv::inshow)

    • namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需销毁
    • namedWindow(“WindowTItle”,WINDOW_AUTOSIZE)
      • WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
      • WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
    • imshow根据窗口名称显示图像到指定的窗口上去
      • 第一个参数是窗口名称
      • 第二个参数是Mat对象
  • 修改图像(cv::cvtColor)

    • cvtColor的功能是把图像从一个彩色空间转换到另外一个色彩空间
    • 参数1:表示原图像(MAT)
    • 参数2:表示新图像(MAT)
    • 参数3:表示目标色彩空间如:COLOR_BGR2GRAY ,CORLOR_BGR2HLS
  • 保存图像(cv::imwrite)

    • 保存图像文件到指定目录路径
      • 参数1:路径(1.png就是png的色彩空间,1.tiff表示其他,根据需要自己定)
      • 参数2:图片(MAT)
    • 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
    • 保存PNG的时候可以保存透明通道的图片
    • 可以指定压缩参数
  • waitKey(0)

    • 窗口的保留时间,如不设置,会秒退

矩阵的掩膜操作

  • ​ 像素范围处理saturate_cast

    • saturate_cast(-100),返回0
    • saturate_cast(288),返回1
    • saturate_cast(100)返回100
    • 这个函数的功能是确保RGB值的范围在0~255之间
  • 对比度增加

    • 这个公式的意思就是如果你选中 的这个中心点比周围的暗,那就让它更暗,如果比周围的亮,那就让它更亮,当你把这个操作扩展到整个图像之后,图像之间的亮暗差距会变得更大,也就是对比度会更大row=1 而不是0,因为一个图像的边缘点没有四周进行对比,不能使用公式,所以循环从1开始,去掉了最外圈像素没有办法进行比较的点

    • int cols = (src.cols-1) * src.channels();
      	int offsetx = src.channels();
      	int rows = src.rows;
      
      	dst = Mat::zeros(src.size(), src.type());
      	for (int row = 1; row < (rows - 1); row++) {
      		const uchar* previous = src.ptr<uchar>(row - 1);
      		const uchar* current = src.ptr<uchar>(row);
      		const uchar* next = src.ptr<uchar>(row + 1);
      		uchar* output = dst.ptr<uchar>(row);
      		for (int col = offsetx; col < cols; col++) {
      			output[col] = saturate_cast<uchar>(5 * current[col] - (current[col- offsetx] + current[col+ offsetx] + previous[col] + next[col]));
      		}
      	}
      
  • 而OpenC

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值