-
不同版本差异
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
- linux下查找函数所在头文件、库