opencv使用总结

本文总结了OpenCV的版本变化,从2.x到4.0的主要区别在于OpenCL加速和对神经网络的支持。此外,介绍了OpenCV的数据类型,包括单通道和多通道类型,并提供了查看Mat类型数据的方法,以及在Linux环境下查找函数头文件的实用技巧。
摘要由CSDN通过智能技术生成
  • 不同版本差异

Opencv2.x:C++流行起来时发布。现今,opencv 2.4.x仍在维护。以后可能仅做bug修复和效率提升,不再增加新功能。鼓励向3.x迁移。

Opencv3.x:与2.x不完全兼容。主要的不同之处在于大部分方法使用了opencl加速。3.4.x版本开始,加强了对神经网络的支持。

Opencv4.0:需要支持C++11的编译器才能编译。

参考: https://blog.csdn.net/blogshinelee/article/details/83578053

  • 数据类型

  • 单通道类型:
    • CV_8U
    • CV_8S
    • CV_16U
    • CV_16S
    • CV_32S
    • CV_32F
    • CV_64F
  • 多通道类型:
    • 说明:多通道类型可描述如下CV_(深度)(类型)(通道数),例如:CV_8UC1
  • 查看中间结果

查看Mat类型存储数据(以Mat中存储的是float数据为例)

windows:(float*)(img.data), 12

linux: *((float*)img.data)@12

说明:指针类型 Mat数据域 要查看的数据元素数目

  • 调用demo

  • 以提取矩形区域为例
  • Python

import cv2

...

ret, binary = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY) #二值化

rect_struc = cv2.getStructuringElement(cv2.MORPH_RECT, (3,5), (-1, -1)) #定义结构元素

rect_res = cv2.morphologyEx(binary, cv2.MORPH_OPEN, rect_struc) #形态学操作(腐蚀、膨胀等)

rect_res = cv2.bitwise_not(rect_res) #按位取反

cv2.imwrite("rect.jpg", rect_res)

  • C++

#include "opencv2/opencv.hpp"

using namespace cv;

...

Mat img;

...

Mat binary;

threshold(img, binary, 50, 255, CV_THRESH_BINARY);

Mat rect_struc = getStructuringElement(MORPH_RECT, Size(3,5))

Mat rect_res;

morphologyEx(binary, rect_res, MORPH_OPEN, rect_struc);

...

  • 实用技能:
    • linux下查找函数所在头文件、库
      • 命令:grep '函数名' 目录名 -r
      • 说明:目录名所指目录需包含include和lib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值