当前位置: 首页 > news >正文

OpenCV||超详细的图像处理模块

一、颜色变换cvtColor

dst = cv2.cvtColor(src, code[, dstCn[, dst]])
  • src: 输入图像,即要进行颜色空间转换的原始图像。
  • code: 转换代码,指定要执行的颜色空间转换类型。这是一个必需的参数,决定了源颜色空间到目标颜色空间的转换方式。
  • dstCn (可选): 目标图像的通道数;如果参数是0,则从srccode自动推导。
  • dst (可选): 输出图像,与src具有相同的大小和深度。

转换代码(code)

  • cv2.COLOR_BGR2GRAY: 将图像从BGR颜色空间转换到灰度空间。这是最常用的转换之一,因为灰度图像处理起来通常比彩色图像要快,而且在某些情况下(如边缘检测)效果也很好。
  • cv2.COLOR_BGR2HSV: 将图像从BGR颜色空间转换到HSV颜色空间。HSV(色调、饱和度、亮度)颜色空间对于处理与颜色相关的任务(如颜色跟踪)非常有用。
  • cv2.COLOR_BGR2RGB: 将图像从BGR颜色空间转换到RGB颜色空间。这在需要将图像用于某些只接受RGB图像的库或框架时很有用。
  • cv2.COLOR_HSV2BGR: 将图像从HSV颜色空间转换回BGR颜色空间。
  • cv2.COLOR_GRAY2BGR: 将灰度图像转换为BGR图像。虽然这通常不是一个实用的转换(因为结果图像将是单色的),但在某些情况下可能有用。

 注意事项:

1、cvtColor不能直接将RGB图像转换为二值图像,需要借助threshold函数。

2、如果对8bit图像使用cvtColor函数进行转换将会丢失一些信息。

二、画基本图形

 画点:直接使用Numpy中的arr[x,y] = number即可

画矩形:cv2.rectangle()

import cv2  # 读取图像  
image = cv2.imread('your_image.jpg')  # 绘制矩形的参数  
# (左上角x坐标, 左上角y坐标, 右下角x坐标, 右下角y坐标), (B, G, R), 线条粗细  
# 注意:OpenCV中图像坐标系的原点在左上角,x向右增加,y向下增加  
# BGR颜色格式,与常见的RGB相反  
rect_coords = (50, 50, 200, 200)  
color = (0, 255, 0)  # 绿色  
thickness = 2  # 线条粗细  # 在图像上画矩形  
cv2.rectangle(image, rect_coords[0:2], rect_coords[2:4], color, thickness)  # 显示图像  
cv2.imshow('Rectangle', image)  # 等待按键事件  
cv2.waitKey(0)  # 销毁所有OpenCV创建的窗口  
cv2.destroyAllWindows()
  • img: 输入的图像矩阵。
  • pt1: 矩形的左上角顶点坐标,格式为(x,y)。
  • pt2: 矩形的右下角顶点坐标,格式为(x,y)。注意,这两个点的次序可以互换,但绘制时会自动调整为左上角和右下角。
  • color: 矩形的颜色,可以是RGB元组或灰度值。
  • thickness: 矩形边框的宽度,默认为1。若设为-1,则表示绘制的是填充的矩形。
  • lineType: 线条的类型,默认为cv2.LINE_8
  • shift: 指定坐标点小数位数,默认为0。

画圆:cv2.circle()

  • img: 输入的图像矩阵。
  • center: 圆心的坐标,格式为(x,y)。
  • radius: 圆的半径。
  • color: 圆的颜色,可以是RGB元组或灰度值。
  • thickness: 圆的边框宽度,默认为1。若设为-1,则表示绘制的是填充的圆。
  • lineType: 线条的类型,默认为cv2.LINE_8
  • shift: 指定坐标点小数位数,默认为0。

画直线:cv2.line()

  • img: 输入的图像矩阵。
  • pt1: 直线的起点坐标,格式为(x,y)。
  • pt2: 直线的终点坐标,格式为(x,y)。
  • color: 直线的颜色,可以是RGB元组或灰度值。
  • thickness: 线条的粗细,默认为1。若设为-1,则表示绘制的是填充的矩形。
  • lineType: 线条的类型,默认为cv2.LINE_8。可选的线条类型还包括cv2.LINE_4cv2.LINE_AA,后者为抗锯齿线型,使线条看起来更平滑。
  • shift: 指定坐标点小数位数,默认为0。

画椭圆:cv2.ellipse()

  • img: 输入的图像矩阵。
  • center: 椭圆中心的坐标,格式为(x,y)。
  • axes: 椭圆横轴和纵轴的一半长度,格式为(major_axis_radius, minor_axis_radius)。
  • angle: 椭圆旋转的角度,以度为单位。
  • startAngle: 椭圆弧绘制的起始角度,以度为单位。
  • endAngle: 椭圆弧绘制的结束角度,以度为单位。若startAngle和endAngle为0和360,则绘制整个椭圆。
  • color: 椭圆的颜色,可以是RGB元组或灰度值。
  • thickness: 椭圆边框的宽度,默认为1。若设为-1,则表示绘制的是填充的椭圆。
  • lineType: 线条的类型,默认为cv2.LINE_8
  • shift: 指定坐标点小数位数,默认为0。

画多边形:cv2.polylines()

  • img: 要绘制多边形的图像。
  • pts: 多边形的顶点坐标,类型为numpy.ndarray,其形状应为(n,1,2),其中n为多边形的边数,2表示每个点有x和y两个坐标。
  • isClosed: 表示多边形是否封闭,如果为True,则表示多边形是封闭的,会从最后一个点连线到第一个点。
  • color: 多边形的颜色,为(B,G,R)格式的元组或一个标量。
  • thickness: 线条的粗细,默认值为1。
  • lineType: 线条的类型,默认值为cv2.LINE_8
  • shift: 坐标点小数位数的位数,默认为0。

画文本:cv2.putText()

  • img: 要在其上绘制文本的图像。该图像应该是一个numpy数组,通常是通过cv2.imread()函数读取的。
  • text: 要绘制的文本字符串。这是你想要在图像上显示的实际文本内容。
  • org: 文本字符串左下角的坐标,格式为(x, y)。这是文本在图像上的起始位置。
  • fontFace: 字体类型。OpenCV提供了一些内置的字体类型,如cv2.FONT_HERSHEY_SIMPLEXcv2.FONT_HERSHEY_PLAIN等。你可以使用这些字体类型之一,但请注意OpenCV默认不支持中文字符的显示,因此如果需要显示中文,可能需要额外设置或使用Pillow等库。
  • fontScale: 字体缩放比例。这个参数控制字体的大小,它是一个浮点数,表示字体大小与字体特定基本大小的倍数。
  • color: 文本的颜色。颜色参数是一个BGR元组,即(B, G, R)格式,每个颜色分量的取值范围是0到255。
  • thickness: 字体线条的粗细程度。这是一个整数,表示线条的宽度。如果设置为负数(如cv2.FILLED),则表示使用填充模式绘制文本。
  • lineType: 线条类型。这个参数控制线条的绘制方式,但在cv2.putText()函数中通常不直接使用,因为它默认为cv2.LINE_8。对于文本绘制,这个参数的影响可能不如在其他绘图函数中那么明显。
  • bottomLeftOrigin: 如果为True,则文本起始点为左下角;如果为False(默认值),则文本起始点为左上角。这个参数用于控制文本绘制的基准点。
import cv2  # 读取图像  
img = cv2.imread('image.jpg')  # 设置文本参数  
text = 'Hello, OpenCV!'  
org = (50, 50)  
fontFace = cv2.FONT_HERSHEY_SIMPLEX  
fontScale = 1  
color = (255, 0, 0)  # 蓝色  
thickness = 2  # 在图像上添加文本  
cv2.putText(img, text, org, fontFace, fontScale, color, thickness)  # 显示图像  
cv2.imshow('Image with Text', img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

具体可参考这篇文章:@弹了个球

python opencv 常用图形绘制方法(线段、矩形、圆形、椭圆、文本)_plt绘制矩形与线段-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/fujian87232/article/details/115556078

 三、图像添加边框

dst = cv2.copyMakeBorder(src, top, bottom, left, right, borderType, [, value])
  1. src:
    • 类型: 输入图像(numpy数组)。
    • 描述: 需要添加边框的原始图像。
  2. top, bottom, left, right:
    • 类型: 整数。
    • 描述: 分别指定图像上、下、左、右四个方向需要添加的边框宽度(以像素为单位)。
  3. borderType:
    • 类型: 整数,OpenCV中定义的边框类型常量。
    • 描述: 指定要添加的边框类型。常见的边框类型包括:
      • cv2.BORDER_CONSTANT: 添加常数值边框。此时需要指定value参数来确定边框的颜色。
      • cv2.BORDER_REPLICATE: 复制图像边界的像素值。
      • cv2.BORDER_REFLECT: 镜像反射,边框会反射图像的边缘。
      • cv2.BORDER_REFLECT_101 或 cv2.BORDER_DEFAULT: 类似于cv2.BORDER_REFLECT,但最外层像素值不会被重复。
      • cv2.BORDER_WRAP: 环绕边框,类似于将图像水平或垂直方向上的像素值进行循环。
  4. value (可选):
    • 类型: 当borderTypecv2.BORDER_CONSTANT时,value是一个BGR颜色值(对于彩色图像)或一个灰度值(对于灰度图像),用于填充边框。
    • 描述: 边框的颜色或灰度值。如果borderType不是cv2.BORDER_CONSTANT,则不需要此参数。

示例: 

cb_image = cv2.copyMakeBorder(image_cut1, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=(0, 0, 255))

结果如下:

 四、图像查找轮廓

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
  • image: 输入图像,必须是二值图像(通常使用 cv2.threshold() 或 cv2.Canny() 进行二值化处理)。注意,cv2.findContours() 会修改输入图像(在 OpenCV 3.x 中返回修改后的图像,但在 4.x 中不返回)。

  • mode: 轮廓检索模式,指定了轮廓的检索方式。常用的模式包括:

    • cv2.RETR_EXTERNAL:只检测外部轮廓。
    • cv2.RETR_LIST:检测所有轮廓,并将它们放入列表中,但不创建轮廓间的层级关系。
    • cv2.RETR_CCOMP:检测所有轮廓并将它们组织成两级层次结构:顶层是外部边界,二级是空洞的边界。
    • cv2.RETR_TREE:检测所有轮廓并重构嵌套轮廓的完整层级。
  • method: 轮廓近似方法,指定了轮廓的表示方式。常用的方法包括:

    • cv2.CHAIN_APPROX_NONE:存储所有轮廓点,相邻两个点的像素位置差不超过1。
    • cv2.CHAIN_APPROX_SIMPLE:压缩水平、垂直和对角方向的元素,只保留端点,这样可以节省内存。
    • cv2.CHAIN_APPROX_TC89_L1 和 cv2.CHAIN_APPROX_TC89_KCOS:应用 Teh-Chin 链逼近算法。
  • contours(可选输出参数): 轮廓的点集列表。每个轮廓本身又是一个点集(NumPy数组),表示轮廓上点的坐标。

  • hierarchy(可选输出参数): 轮廓的层级结构信息,是一个 NumPy 数组。对于每个轮廓,hierarchy 包含四个元素:[next, previous, first_child, parent],分别表示轮廓中的下一个轮廓、上一个轮廓、第一个子轮廓和父轮廓的索引。如果某个元素不存在,则对应位置为负值。

  • offset(可选参数): 每个轮廓点移动的可选偏移量。通常设置为默认值 Point()

示例:

import cv2
import numpy as np# 绘图展示
def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows()image = cv2.imread('img\\1.png')
image_copy_cut = image[0:500, 0:500]
cv_show("image_copy_cut", image_copy_cut)
gray_img = cv2.cvtColor(image_copy_cut, cv2.COLOR_BGR2GRAY)
cv_show("gray_img", gray_img)
_, binary_image = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
cv_show("binary_image", binary_image)
# 查找轮廓
contours, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 在原图上绘制轮廓
cv2.drawContours(image_copy_cut, contours, -1, (0, 255, 0), 2)
cv_show("image_copy_cut", image_copy_cut)

结果如下:

 链接跳转:

章节一、OpenCV||超细节的基本操作

章节二、OpenCV||超简略的Numpy小tip

章节四、OpenCV||超详细的灰度变换和直方图修正

章节五、OpenCV||超详细的图像平滑

章节二、OpenCV||超简略的Numpy小tip

相关文章:

OpenCV||超详细的图像处理模块

一、颜色变换cvtColor dst cv2.cvtColor(src, code[, dstCn[, dst]]) src: 输入图像,即要进行颜色空间转换的原始图像。code: 转换代码,指定要执行的颜色空间转换类型。这是一个必需的参数,决定了源颜色空间到目标颜色空间的转换方式。dst…...

java面向对象期末总结

子类父类方法执行顺序?多态中和子类打印不一样; 子类在实现父类方法的时候没有用super关键字进行调用也会先执行父类的构造方法吗? 是的,当子类实例化时,先执行父类的构造方法,再执行子类的构造方法。即使在…...

文件搜索 36

删除文件 文件搜索 package File;import java.io.File;public class file3 {public static void main(String[] args) {search(new File("D :/"), "qq");}/*** 去目录搜索文件* param dir 目录* param filename 要搜索的文件名称*/public static void sear…...

IO多路转接

文章目录 五种IO模型fcntl多路转接selectpollepollepoll的工作模式 五种IO模型 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式.阻塞IO是最常见的IO模型。非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULD…...

基于深度学习的面部表情分类识别系统

:温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 面部表情识别是计算机视觉领域的一个重要研究方向, 它在人机交互、心理健康评估、安全监控等领域具有广泛的应用。近年来,随着深度学习技术的快速发展&#xf…...

日志远程同步实验

目录 一.实验环境 二.实验配置 1.node1发送方配置 (1)node1写udp协议 (2)重启服务并清空日志 2.node2接收方配置 (1)node2打开接受日志的插件,指定插件用的端口 (2&#xff…...

数据结构之《二叉树》(中)

在数据结构之《二叉树》(上)中学习了树的相关概念,还了解的树中的二叉树的顺序结构和链式结构,在本篇中我们将重点学习二叉树中的堆的相关概念与性质,同时试着实现堆中的相关方法,一起加油吧! 1.实现顺序结构二叉树 在…...

php json_encode 参数 JSON_PRETTY_PRINT

https://andi.cn/page/621642.html...

【UE 网络】Gameplay框架在DS架构中的扮演的角色

目录 0 引言1 核心内容1.1 Gameplay各部分创建的流程1.2 Gameplay框架在DS和客户端的存在情况1.3 数据是独立存在于DS和客户端的 2 Gameplay框架各自负责的功能2.1 GameMode2.2 GameState2.3 PlayerController2.4 PlayerState2.5 Pawn2.6 AIController2.7 Actor2.8 HUD2.9 UI &…...

【云原生】StatefulSet控制器详解

StatefulSet 文章目录 StatefulSet一、介绍与特点1.1、介绍1.2、特点1.3、组成部分1.4、为什么需要无头服务1.5、为什么需要volumeClaimTemplate 二、教程2.1、创建StatefulSet2.2、查看部署资源 三、StatefulSet中的Pod3.1、检查Pod的顺序索引3.2、使用稳定的网络身份标识3.3、…...

使用 Python 制作一个属于自己的 AI 搜索引擎

1. 使用到技术 OpenAI KEYSerper KEYBing Search 2. 原理解析 使用Google和Bing的搜搜结果交由OpenAI处理并给出回答。 3. 代码实现 import requests from lxml import etree import os from openai import OpenAI# 从环境变量中加载 API 密钥 os.environ["OPENAI_AP…...

rust读取csv文件,匹配搜索字符

1.代码 use std::fs::File; use std::io::{BufRead, BufReader}; use regex::{Regex};fn main() {let f File::open("F:\\0-X-RUST\\1-systematic\\ch2-fileRead\\data\\test.csv").unwrap();let mut reader BufReader::new(f);let re Regex::new("45asd&qu…...

隐藏采购订单类型

文章目录 1 Introduction2 code 1 Introduction The passage is that how to hiden purchase type . 2 code DATA: ls_shlp_selopt TYPE ddshselopt. IF ( sy-tcode ME21N OR sy-tcode ME22N OR sy-tcode ME23N or sy-tcode ME51N OR sy-tcode ME52N OR sy-tcode ME5…...

ESP32人脸识别开发- 基础介绍(一)

一、ESP32人脸识别的方案介绍 目前ESP32和ESP32S3都是支持的,官方推的开发板有两种,一种 ESP-EYE ,没有LCD 另一种是ESP32S3-EYE,有带LCD屏 二、ESP32人脸识别选用ESP32的优势 ESP32S3带AI 加速功能,在人脸识别的速度是比ESP32快了不少 | S…...

编程学习指南:语言选择、资源推荐与高效学习策略

目录 一、编程语言选择 1. Java:广泛应用的基石 2. C/C:深入底层的钥匙 3. Python:AI与大数据的宠儿 4. Web前端技术:构建交互界面的艺术 二、学习资源推荐 1. 国内外在线课程平台 2. 官方文档与教程 3. 书籍与电子书 4…...

AWS开发人工智能:如何基于云进行开发人工智能AI

随着人工智能技术的飞速发展,企业对高效、易用的AI服务需求日益增长。Amazon Bedrock是AWS推出的一项创新服务,旨在为企业提供一个简单、安全的平台,以访问和集成先进的基础模型。本文中九河云将详细介绍Amazon Bedrock的功能特点以及其收费方…...

CentOS 8 的 YUM 源替换为国内的镜像源

CentOS 8 的 YUM 源替换为国内的镜像源 1.修改 DNS 为 114.114.114.1141.编辑 /etc/resolv.conf 文件:2.在文件中添加或修改如下内容:3.保存并退出编辑器。 2.修改 YUM 源为国内镜像1.备份原有的 YUM 源配置:2.下载新的 YUM 源配置3.清理缓存…...

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给…...

浅学爬虫-爬虫维护与优化

在实际项目中,爬虫的稳定性和效率至关重要。通过错误处理与重试机制、定时任务以及性能优化,可以确保爬虫的高效稳定运行。下面我们详细介绍这些方面的技巧和方法。 错误处理与重试机制 在爬虫运行过程中,网络不稳定、目标网站变化等因素可…...

STM32G070系列芯片擦除、写入Flash错误解决

在用G070KBT6芯片调用HAL_FLASHEx_Erase(&EraseInitStruct, &PageError)时,调试发现该函数返回HAL_ERROR,最后定位到FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE)函数出现错误,pFlash.ErrorCode为0xA0,即FLASH错误标…...

08.02_111期_Linux_NAT技术

NAT(network address translation)技术说明 IP报文在转发的时候需要考虑 源IP地址 和 目的IP地址, IP报文每到达一个节点,就会更改一次IP地址和目的IP地址,其中节点是指主机、服务器、路由器 那么这个更改是如何进行的呢? 除了…...

【2024蓝桥杯/C++/B组/小球反弹】

题目 分析 Sx 2 * k1 * x; Sy 2 * k2 * y; (其中k1, k2为整数) Vx * t Sx; Vy * t Sy; k1 / k2 (15 * y) / (17 * x); 目标1:根据k1与k2的关系,找出一组最小整数组(k1, k2)&#xff…...

PHP中如何实现函数的可变参数列表

在PHP中,实现函数的可变参数列表主要有两种方式:使用func_get_args()函数和使用可变数量的参数(通过...操作符,自PHP 5.6.0起引入)。 1. 使用func_get_args()函数 func_get_args()函数用于获取传递给函数的参数列表&…...

串---链串实现

链串详解 本文档将详细介绍链串的基本概念、实现原理及其在 C 语言中的具体应用。通过本指南,读者将了解如何使用链串进行各种字符串操作。 1. 什么是链串? 链串是一种用于存储字符串的数据结构,它使用一组动态分配的节点来保存字符串中的…...

科技赋能生活——便携气象站

传统气象站往往庞大而复杂,需要专业人员维护,它小巧玲珑,设计精致,可以轻松放入背包或口袋,随身携带,不占空间。无论是城市白领穿梭于高楼大厦间,还是户外爱好者深入山林湖海,都能随…...

Golang——GC原理

1.垃圾回收的目的 将未被引用到的对象销毁,回收其所占的内存空间。 2.根对象是什么 全局变量:在编译器就能确定的存在于程序整个生命周期的变量。 执行栈:每个goroutine都包含自己的执行栈,这些执行栈上包含栈上的变量及指向分配…...

OpenStack概述

一、初识OpenStack OpenStack Docs: 概况 一)OpenStack架构简述 1、理解OpenStack OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集&…...

机器学习练手(三):基于决策树的iris 多分类和波士顿房价预测

总结:本文为和鲸python 可视化探索训练营资料整理而来,加入了自己的理解(by GPT4o) 原活动链接 原作者:vgbhfive,多年风控引擎研发及金融模型开发经验,现任某公司风控研发工程师,对…...

PS 2024 百种常用插件下载安装教程【免费使用,先到先得】

文章目录 软件介绍软件下载安装步骤 专栏推荐: 超多精品软件(持续更新中…) 软件推荐: PS 2024 PR 2024 软件介绍 PS常用插件 此软件整合了市面近百款ps处理插件,可实现:一键制作背景,一键抠图…...

逻辑推理之lora微调

逻辑推理微调 比赛介绍准备内容lora微调lora微调介绍lora优势代码内容 start_vllm相关介绍调用 运行主函数提交结果总结相应连接 比赛介绍 本比赛旨在测试参与者的逻辑推理和问题解决能力。参与者将面对一系列复杂的逻辑谜题,涵盖多个领域的推理挑战。 比赛的连接:…...

广州建设网站哪个好/百度网盘app下载安装官方免费版

参考文献:Windows下使用_Ruby1.9.3安装RedMine2.2.3 参考资料:http://www.redmine.org/projects/redmine/wiki/RedmineInstall 注:##符号处为重点操作 一、 软件准备 RailsInstaller-2.1.0,包括Ruby 1.9.3MySQL5.5.X:…...

免费企业wordpress主题/微信推广引流加精准客户

互联网飞速发展,各色各样的应用,覆盖了衣食住行的各个方面,进而影响到了这些行业的产业形态和运营方式。对于 年轻人来说,这无疑是给生活带来了便利,然而对于“老年人”这个特殊的群体,似乎渐渐被遗忘&…...

做房产网站多少钱/淘宝关键词

编者按:今年QCon容器/Docker和微服务几乎占据了会场的半壁江山,大家也都趋之若鹜场场爆满,而且作为一名云计算工程师,对容器/Docker也是格外关注,容器/Docker已经不仅仅是个技术,而是作为一个生态在深刻影响着每一个细分行业&…...

青岛企业网站建设/网站建设策划

配置说明:使用数据库为MySQL,版本为5.0.83在VS2008中的配置如下:1.工程属性—》C/C—》Ddditional Incluce Directories—》填入mysql目录下的include文件夹地址。如我的是:"D:/phpnow/MySQL-5.0.83/include"2.工程属性…...

做品牌网站公司/免费seo优化

引入 看到上一篇的编写的测试吗?LINQ to SQL类完全暴露给了客户(这里指测试,接下来几篇将是UI表现层),客户完全操作数据(例如上一节的创建Customer),这篇我们要隐藏数据访问层的实现细节,躲起来别让我看见!…...

什么是网站?/清远今日头条最新消息

一、基本概念   OpenCV的全称是:Open Source Computer Vision Library 。 OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux…...