计算机视觉(OpenCV+TensorFlow)

这篇具有很好参考价值的文章主要介绍了计算机视觉(OpenCV+TensorFlow)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机视觉(OpenCV+TensorFlow)



前言

本系列文章是OpenCV系列文章的第三篇,仍然跟随上篇内容主要聚焦于图像的一些操作


3.图像金字塔

在通常情况下我们使用大小恒定的图像。但在某些情况下,我们需要使用不同分辨率的同幅图像,例如,在搜索图像中的某些内容比如脸部信息时,并不确定该内容在图像中占据的大小。这种情况下,我们需要创建一组不同的分辨率的相同图像,并在所有图像中搜索该内容。这些不同分辨率的图像被称为图像金字塔(因为当它们堆叠排列时,底部为最高分辨率图像而顶部为最低分辨率图像,看起来像金字塔)

                                                                                                                                                                    **图像金字塔主要有两种:**
  1. 高斯金字塔
  2. 拉普拉斯金字塔

3.1 高斯金字塔

向上采样:在图像金字塔中,越靠下的分辨率越大,所以向上采样指的是从分辨率大的图像中得到分辨率小的图像
方法:

  1. 将图像与下方的高斯核进行卷积,就是我们前几次一直说的对应位置相乘最后都加在一起从而代替中间像素的那个值
  2. 将所有偶数行和偶数列去除。

为什么要先卷积再去除呢:
是因为如果直接去除偶数行和偶数列,那势必会导致大量数据的丢失,如果我们先卷积,卷积后的值是它周围的值共同作用的,所以卷积后再去除损失的数据量比直接去除要小很多,但是还是会少一部分数据
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
向下采样:在图像金字塔中,越靠上的分辨率越大,所以向下采样指的是从分辨率小的图像中得到分辨率大的图像
**方法: **
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow我们看第一步放大后,有近四分之三的数据都是0,第二部卷积后,实际上是把不是0的数据给分配了一部分给0
那实际上,就是把原有的数据给往四周分散了。那在放大的时候,原来的数据给了其他的,那对应自身来说不也就是丢失了一部分数据。

# 引入图片
img=cv2.imread("AM.png")
cv_show(img,'img')
print (img.shape)
# 向上采样
up=cv2.pyrUp(img)
cv_show(up,'up')
print (up.shape)
# 向下采样
down=cv2.pyrDown(img)
cv_show(down,'down')
print (down.shape)

**而为了让数据尽量的少丢失点,我们又有了拉普拉斯金字塔。 **

3.2 拉普拉斯金字塔

https://blog.csdn.net/ftimes/article/details/106731558

** 在高斯金字塔中,我们提到了上采样和下采样。但是无论是上采样还是下采样都会丢失像素值,所以这两种操作并不是可逆的。也就是说,对一幅图先进行上采样再进行下采样,是无法恢复到原始状态。同样,先下采样再上采用也无法恢复到原始状态**

因此我们引入了拉普拉斯金字塔(The Laplacian pramid)
简而言之,拉普拉斯金字塔的第 i 层,是由【高斯金字塔的第 i 层】 与 【高斯金字塔中的第 i+1 层的向上采样结果】之差。
简单来说,拉普拉斯金字塔是一个 高斯差值金字塔,下面这个图就是一个拉普拉斯每一层的流程
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
下面这个图简化了上图的流程,我们从后往前看,G3向上取样后,G2减去它就是 L2。
而 G3加上L2就是G2。因为L2=G2-G3向上
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow

up=cv2.pyrUp(img)
up_down=cv2.pyrDown(up)
cv_show(img-up_down,'img-up_down')

4.图像轮廓

图像边缘和图像轮廓的区别

** 前面我们在图像形态学操作里,用cv2.morphologyEx()这个函数实现图像梯度的提取,用膨胀图像-腐蚀图像,获取一个图像中前景图像的边缘。还有我们的礼帽和黑帽一定程度也能提取图像的边缘信息。依旧我们在图像梯度中详细讲过的 sobel算子,scharr算子,laplasian算子,canny边缘检测,这些都是检测图像中边缘线条的。**
** 而本章讲的是图像轮廓,图像轮廓和图像边缘不少一回事,图像边缘不少图像轮廓!!!!图像边缘是图像中的线条,这些线条是不连续的,零散的线段,只要是由梯度,把由梯度的像素点提取出来就可以了,这是边缘检测的操作手法。而图像轮廓首先要是一个整体的,就是将边缘连接起来形成一个整体,这才叫轮廓。**
** 边缘检测主要是通过一些手段检测数字图像中明暗变化剧烈(即梯度变化比较大)像素点,偏向于图像中像素点的变化。如Canny边缘检测,结果通常保存在和原图片一样尺寸和类型的边缘图中。轮廓检测指检测图像中的对象边距,更偏向于关注上层语义对象,主要用来分析物体的形态,比如物体的周长和面积等。可以说 边缘包括轮廓。**
** 边缘主要是作为图像的特征使用,比如可以用边缘特征可以区分脸和手,而轮廓则是一个很好的图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义**

检测图像

在OpenCV中,我们用 image, contours, hierarchy = **cv2.findContours(img,mode,method) **这个函数来得到轮廓

  • img:要做轮廓检测的图像,必须是8位单通道二值图像。所以,一般情况下我们都是将图像处理位二值图像后再将其作为参数传入。在很多情况下,我们是预先对图像进行阈值分割或者边缘检测处理(比如经过Canny,拉普拉斯等边缘检测算子处理过的二值图像),在得到满意的二值图像后再作为参数传入使用,这样效果会更好。
  • mode:轮廓检索模式。均可了轮廓的提取方式:
    • cv2.RETR_EXTERNAL:只检测最外面的轮廓
    • cv2.RETR_LIST:减少所有的轮廓,并将其保存到一条链表当中,对检测到的轮廓不建立等级关系
    • cv2.RETR_CCOMP:检索所有轮廓并将它们组织成两级层次结构。顶层是各部分的外部边界,第二层是空洞的边界。
    • cv2.RETR_TREE:检索所有轮廓,并建立一个等级树结构的轮廓,就是重构嵌套轮廓的整个层次
    • 说明:一般情况下,我们只用第4种模式,因为第4种模式是检测所有的轮廓,并且把这些轮廓按层次保存成一个树结构,后面如果我们有需要直接调用即可。
  • method:轮廓逼近方法,就是如何表达轮廓,意思就是我是用线表示轮廓呢?还是简单的用2个点就表示一条线的轮廓:
    • cv2.CHAIN_APPROX_NONE:以 Freeman 链码的方式输出轮廓,意思就是我存储了所有的轮廓点,就是相连两个点的像素位置差不超过 1 ,我可以用完整的线条来表示轮廓,就是我可以画出一个完整的轮廓。
    • cv2.CHAIN_APPROX_SIMPLE:压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标。比如一个矩形只用4个点就可以表示。同理如果是一个多边形,我们就输出这个多边形的订单序列

计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
函数返回值:

  • image:与参数img的尺寸一致的。后面高版本的opencv已经不返回这个对象
  • contours:是返回的轮廓。这个轮廓是一个数组
  • hierachy:是轮廓的层次信息,就是mode参数决定的返回的轮廓数据的组织结构
  • 说明:在opencv中,我们都是从黑色背景种查找白色对象,因此,对象必须是白色的,背景必须是黑色的

使用轮廓检测函数 cv2.findContours()要注意的点:

  1. 我们检测一张彩图的轮廓是,首先我们要把彩图转换为灰度图像,然后我们用阈值函数把灰度图像处理成二值图像,此时才能作为参数 img 传入到函数中
  2. 我们检测轮廓的时候,一张图片可能有多个轮廓,也可能有一个轮廓礼貌套几个轮廓(就是空洞)所以我们要明确我们想要检测几级轮廓。
    1. 当我们只想检测最外面的一层轮廓时,参数 mode=cv2.RETR_EXTERNAL
    2. 当我们像检测所有的轮廓(就是轮廓里面套轮廓,可以嵌套多层)时,参数mode可以选择其他三种
      1. cv2.RETR_LIST是把所用的轮廓放到一起,不区分轮廓之间的等级关系
      2. cv2.RETR_CCOMP是把所有的轮廓分2级
      3. cv2.RETR_TREE是建立一个树结构的层次关系
  3. 当我们轮廓检测完毕后,不管是检测一个轮廓还是检测所有的轮廓,检测所有轮廓不管是保存轮廓之间的等级关系还是不保存,我们的轮廓本身数据可以有两种方式存储,、
    1. cv2.CHAIN_APPROX_NONE:就是保存轮廓的所有像素点,此时返回的 contours可视化处理后就是轮廓线。
    2. cv2.CHAIN_APPROX_SIMPLE:就是表示我们轮廓数据不是连续的像素点而是轮廓的顶点序列,此时我们可视化 contours时就是一些顶点,就是轮廓的顶点,不是线。
    3. countours的属性:
      1. len(contours)返回的就是我们检测到了几个轮廓
      2. len(contours[i])返回第 i 个轮廓长度,就是它有多少个像素点
      3. contours[i].shape返回的就是轮廓内点的形状,比如(4,1,2)就表示轮廓 i 有4个轮廓点,每个点是1行两列
      4. [[79,270]] [[79,383]]** [[195,383]]** [[195, 270]] 这其实就是一个方框轮廓的4个点的坐标值。**
  4. hierarchy是我们检测到的轮廓的等级关系的数据,这个数据可以反映我们的轮廓之间是如何连接的。

绘制边缘

轮廓绘制函数:cv2.drawContours(img, contours, contourIdx, color [ thickness, lineType, hierarchy, maxLevel, offset] )

  1. img:待绘制轮廓的图像
  2. contours:需要绘制的轮廓,这个参数就是 findContours()的输出
  3. contourldx:需要绘制的轮廓的索引号,如果 contourldx=-1,表示绘制全部轮廓;如果这个参数是零或者正整数,表示要绘制的轮廓是对应的索引号的轮廓
  4. color:绘制的颜色,用 BGR 表示
  5. thickness:表示轮廓的粗细,如果 thickness=-1则表示要绘制实心轮廓
  6. lineType:轮廓的线条形状
  7. hierarchy:cv2.findContours()返回的层次信息。
  8. maxLevel:要绘制的轮廓的偏移到不同的位置展示出来

注意:由于该函数是在 img 的基础上绘制的,不会再重新生成一个带轮廓的新对象,所有这个函数是在原图中绘制的。所以我们要保存原图
轮廓检测步骤小结:

  1. 当我们拿到的原图是一张彩色图的时候,第一步我们要把彩色图变成灰度图
  2. 把灰度图用阈值函数处理成二值图像
  3. 检测轮廓
  4. 绘制轮廓
# 导入图片
img = cv2.imread('contours.png')
# 彩色图转灰色图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 灰色图转二值图
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv_show(thresh,'thresh')
# 检测轮廓
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
# 画轮廓
draw_img = img.copy()
res = cv2.drawContours(draw_img, contours, -1, (0, 0, 255), 2)
cv_show(res,'res')

5.轮廓近似

我们看下面这个图片,它不是一个规则的图形,是一个不规则的图形,如果要精确的描述轮廓的话就是第三幅图
如果像要近似的表示的话,就是第二幅图,用一个矩形就可以表示

https://blog.csdn.net/SSJJRRRR/article/details/108478898
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
那OpenCV的 approxPolyDP 函数就可以实现这个功能。
approxPolyDP函数使用了 Douglas-Peucker算法:

  1. 先从轮廓中找出两个最远的点,将两点相连,即 b-c ;
  2. 在原来的轮廓上查找一个里线段距离最远的点,将该点加入逼近后的新轮廓中,即 c-d ;
  3. 然后重复前面的算法,不断迭代,将最远的点添加进来,直到所有的点到多边形的最短距离小于指定的精度

计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
在OpenCV中 cv2.approxPolyDP(cnt,epsilon,True) 就是用来得到近似轮廓
cnt 就是 findContours函数得到的 contours
epsilon就是精度
最后一个布尔值:如果为true,则闭合近似曲线(其第一个和最后一个顶点为连接的);否则,不闭合。

# 导入图片
img = cv2.imread('contours2.png')
# 转成灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 转为二值图
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 检测轮廓
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cnt = contours[0]
# 画出轮廓
draw_img = img.copy()
res = cv2.drawContours(draw_img, [cnt], -1, (0, 0, 255), 2)
cv_show(res,'res')
# arcLength轮廓的周长,epsilon是精度
epsilon = 0.15*cv2.arcLength(cnt,True)
# 得到近似轮廓
approx = cv2.approxPolyDP(cnt,epsilon,True)
# 画出轮廓
draw_img = img.copy()
res = cv2.drawContours(draw_img, [approx], -1, (0, 0, 255), 2)
cv_show(res,'res')

外接矩形

x,y,w,h=boundingRect(cnt)
cnt 就是一个轮廓,x,y是矩形的左上角坐标,而(w,h)为矩形的宽度和高度
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
img:画轮廓的图片
(x,y):矩形的左上角的坐标
(x+w,y+h):矩形的右下角的坐标
(0,255,0):颜色 BGR
2:线条宽度

# 引入坐标
img = cv2.imread('contours.png')
# 转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 转为二值图
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 检测轮廓
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cnt = contours[0]
# 找到外接矩形的信息
x,y,w,h = cv2.boundingRect(cnt)
# 画矩形
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv_show(img,'img')

外接圆

(x,y),radius = cv2.minEnclosingCircle(cnt)
cnt:就是一个轮廓
(x,y):圆心坐标
radius:半径
img = cv2.circle(img,center,radius,(0,255,0),2)
参数基本上与外接矩形都差不多

(x,y),radius = cv2.minEnclosingCircle(cnt) 
center = (int(x),int(y)) 
radius = int(radius) 
img = cv2.circle(img,center,radius,(0,255,0),2)
cv_show(img,'img')

6. 模板匹配

6.1 什么是模板匹配

https://blog.csdn.net/m0_37579176/article/details/116950903
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow

模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配,我们可以使用包含要检测对象的”模板“来检测输入图像中的对象。

也就是说,我们需要两个图像来应用模板匹配:

  1. 源图像:这是我们希望在其中找到的与模板匹配的图像
  2. 模板图像:我们要搜索的图像

为了在源图像中找到模板图像,我们在源图像中从左到右和从上到下依次滑动模板:
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
应用模板匹配,就像在源图像上从左到右,从上到下滑动模板,在每一个位置都计算一个指标以表明这个位置处两个图像块之间匹配程度的高低
在每个(x,y)位置,都会计算一个度量来表示匹配的“好”或“坏”。通常,我们使用归一化的相关系数来确定两个图像块之间像素强度有多“相似”
相关系数有很多计算方式。
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
对于模板 T 在源图像 I 上的每个位置,取两者重合部分的图像块,计算相似度度量结果,存储在结果矩阵 R 中。源图像中的每个(x,y)坐标在结果矩阵 R 中包含一个条目,除非模板越界

下图就是结果矩阵与源图像重叠后的图像
在这里,我们可以可视化叠加在原始图像上的结果矩阵R。注意R与原始模板大小不相同。这是因为整个模板必须在源图像的内部滑动,得到等大的两个图像块,才能计算相关性。如果模板超出了源的边界,我们将不计算相似性度量。
计算机视觉(OpenCV+TensorFlow),计算机视觉,opencv,tensorflow
结果矩阵中 R 最亮的位置表示最佳匹配位置,而暗区表示该点源图像和模板图像之间的相关性很小
当模板图像中的水杯,与源图像中的水杯,两者完全重合的时候,模板图像左上角所在的源图像位置,存储的是模板与源图像相似的的最大值。
但是我们需要确保要检测的模板与源图像中检测的对象几乎完全相同。即使外观很小的偏差也会极大地影响匹配的结果。
在OpenCV中我们可以使用 cv2.matchTemplate()进行模板匹配,这个函数有三个参数:

  1. 输入图像:包含我们要检测的对象的图像
  2. 模板图像:对象的图像
  3. 模板匹配方法

- TM_SQDIFF:计算平方不同,计算出来的值越小,越相关
- TM_CCORR:计算相关性,计算出来的值越大,越相关

- TM_CCOEFF:计算相关系数,计算出来的值越大,越相关
- TM_SQDIFF_NORMED:计算归一化平方不同,计算出来的值越接近0,越相关
- TM_CCORR_NORMED:计算归一化相关性,计算出来的值越接近1,越相关
- TM_CCOEFF_NORMED:计算归一化相关系数,计算出来的值越接近1,越相关
另外值得注意的是,如果您只想检测模板图像上的特定区域,则可以为模板图像提供一个掩膜,如下所示:
**result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED, mask) **

掩膜,即为模板图像上感兴趣的区域,用于忽略模板图像上无用的干扰的特征,即不属于检测目标的干扰特征。对于模板上你不希望被搜索的区域,掩膜值应该设置为0。对于模板图像上您要进行搜索的区域,掩膜值应该设置为255。掩膜与模板图像具有相同的维度,并且每个元素的类型也需要一致。

# 引入源图像
img = cv2.imread('lena.jpg', 0)
# 引入模板图像
template = cv2.imread('face.jpg', 0)
# 模板匹配
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
# 得到最大的像素点和最小的像素点的值和坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# 根据方法选择最大值或最小值的坐标
# 如果是平方差匹配TM_SQDIFF或归一化平方差匹配TM_SQDIFF_NORMED,取最小值
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
    top_left = min_loc
else:
    top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
# 画矩形
cv2.rectangle(img2, top_left, bottom_right, 255, 2)

总结

这次紧接者上篇内容再一次讲解了一些有关图像的操作,预计还需要一期把图像操作讲个差不多后,进入实战环节,将上述图像内容,通过实战进行一个强化训练

我是Mayphry,从一点点到亿点点,我们下次再见文章来源地址https://www.toymoban.com/news/detail-753603.html

到了这里,关于计算机视觉(OpenCV+TensorFlow)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV第 1 课 计算机视觉和 OpenCV 介绍

      我们人类可以通过眼睛看到五颜六色的世界,是因为人眼的视觉细胞中存在分别对红、绿、蓝敏感的 3 种细胞。其中的光感色素根据光线的不同进行不同比例的分解,从而让我们识别到各种颜色。   对人工智能而言,学会“ 看 ”也是非常关键的一步。那么机器人是如

    2024年01月24日
    浏览(36)
  • 【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头

    Droidcam 是一款可以将手机变成网络摄像头的工具,我们可以利用 Droidcam 让 OpenCV 拥有调用手机摄像头的能力。 2.1 安装 DroidCam 在手机和电脑上分别安装 DroidCam 的客户端和服务端 下载地址:https://pan.baidu.com/s/1DrBn3P1Bx-SXa4d6oziifA?pwd=gr1o 提取码:gr1o 2.2 测试连接状态 手机和电脑需

    2024年02月09日
    浏览(33)
  • 【opencv】计算机视觉:实时目标追踪

    目录 前言 解析 深入探究 前言 目标追踪技术对于民生、社会的发展以及国家军事能力的壮大都具有重要的意义。它不仅仅可以应用到体育赛事当中目标的捕捉,还可以应用到交通上,比如实时监测车辆是否超速等!对于国家的军事也具有一定的意义,比如说导弹识别目标等

    2024年02月05日
    浏览(34)
  • 【计算机视觉】---OpenCV实现物体追踪

    OpenCV中的物体追踪算法基于视觉目标跟踪的原理。物体追踪的目标是在连续的图像序列中定位和跟踪特定物体的位置。 在物体追踪中,我们需要对目标对象进行表示。通常使用边界框(bounding box)来表示目标的位置和大小。边界框是一个矩形区域,由左上角的坐标(x,y)和

    2024年02月08日
    浏览(40)
  • 【opencv】计算机视觉基础知识

    目录 前言 1、什么是计算机视觉 2、图片处理基础操作 2.1 图片处理:读入图像 2.2 图片处理:显示图像 2.3 图片处理:图像保存 3、图像处理入门基础 3.1 图像成像原理介绍 3.2 图像分类 3.2.1 二值图像 3.2.2灰度图像 3.2.3彩色图像(RGB) 4、像素处理操作 4.1 读取像素 4.2 修改像素

    2024年02月04日
    浏览(48)
  • 开源计算机视觉库OpenCV详解

    目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、OpenCV和OpenGL的区别 8、OpenCV与YOLO的区别

    2024年02月10日
    浏览(40)
  • 【计算机视觉】基于OpenCV计算机视觉的摄像头测距技术设计与实现

    在当今技术日益进步的时代,计算机视觉已成为我们生活中不可或缺的一部分。从智能监控到虚拟现实,计算机视觉技术的应用范围日益广泛。在这篇博客中,我们将探索一个特别实用的计算机视觉案例:使用OpenCV实现摄像头测距。这一技术不仅对专业人士有用,也为编程爱

    2024年02月04日
    浏览(36)
  • 计算机视觉:使用opencv实现车牌识别

    汽车车牌识别(License Plate Recognition)是一个日常生活中的普遍应用,特别是在智能交通系统中,汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起,以准确识别出车牌牌照的字符为目的,将识别出的数据传送至交

    2024年02月04日
    浏览(32)
  • Python OpenCV 计算机视觉:6~7

    原文:OpenCV Computer Vision with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。 本附录显示了如何在

    2024年02月02日
    浏览(35)
  • 能用OpenCV做的15大计算机视觉任务

    使用OpenCV,你几乎可以完成你能想到的每种计算机视觉任务。现实生活中的问题要求同时使用许多计算机视觉算法和模块来获得所需的结果。因此,你只需了解要用哪些OpenCV模块和函数来获得你想要的东西。 让我们来看看OpenCV中可以开箱即用的功能。 OpenCV的最大优点之一是

    2024年02月04日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包