GVKun编程网logo

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天(python opencv直方图均衡)

1

最近很多小伙伴都在问PythonOpenCV图像处理之图像直方图,取经之旅第23天和pythonopencv直方图均衡这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展36篇博文带你

最近很多小伙伴都在问Python OpenCV 图像处理之图像直方图,取经之旅第 23 天python opencv直方图均衡这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录、AR opencv-python | cv2.error: OpenCV(4.5.1) batch_distance.cpp:275: error: (-215:Assertion failed)、cv2.error: OpenCV(4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: error:、OpenCV - Windows(win10)编译 opencv + opencv_contrib等相关知识,下面开始了哦!

本文目录一览:

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天(python opencv直方图均衡)

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天(python opencv直方图均衡)

Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。

Python OpenCV

    • 基础知识铺垫
    • matplotlib 中 pyplot 绘制直方图
      • 函数原型介绍
    • python opencv 直方图(histogram)
      • 函数原型介绍
      • 彩色图像,不同通道的直方图
    • 直方图均衡化 (Histogram Equalization)
      • 函数原型介绍
    • 橡皮擦的小节

基础知识铺垫

截止到本篇博客,已经第二次听到直方图这个概念了,有必要将其搞懂。

图像直方图(histogram)是图像统计学特征,用来统计像素值出现的频次,常用在分析图像的基本特征。

创建直方图一般分为两个步骤:

  1. 统计数据
  2. 绘制直方图

直方图的定义

  • 横坐标:图像中各个像素点的灰度级
  • 纵坐标:该灰度级的像素个数

绘制直方图需要 matplotlib 库,这个需要自行安装一下。

matplotlib 中 pyplot 绘制直方图

pyplot 中提供了一个绘制直方图的函数,名称为 hist

函数原型介绍

matplotlib.pyplot.hist() 函数原型如下

(n, bins, patches)=matplotlib.pyplot.hist(x, bins=None, range=None, density=None, weights=None,
cumulative=False, bottom=None, histtype=''bar'', align=''mid'', orientation=''vertical'',
rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, *, data=None, **kwargs)

参数非常多,实际应用中只需掌握几个重要参数。

最简单的测试代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 生成数据,以 10000 组均值为0,标准差为 1 的高斯分布数据为例
data = np.random.normal(0,1,10000)

n, bins, patches = plt.hist(data)
plt.show()

运行效果如下:
Python OpenCV 图像处理之图像直方图,取经之旅第 23 天

其中,np.random.normal(0,1,10000) 函数说明如下,np.random.normal() 是一个正态分布,normal这里是正态的意思。

该函数原型为:

numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数说明如下:

  • loc:概率分布的均值,对应着整个分布的中心 center
  • scale:概率分布的标准差,对应于分布的宽度,scale 越大,越矮胖,scale 越小,越瘦高
  • size:数据类型为 int or tuple of ints, 输出的 shape,默认为 None,只输出一个值

其实该函数的目的就是,输出为高斯分布的一组数或一个值。
简单案例:

data = np.random.normal(loc=0, scale=1, size=2)
print(data)

继续回顾 matplotlib.pyplot.hist() 函数的相关参数(官网说明):

只选取其中比较重要的几个参数如下:

  • x:(n,) array or sequence of (n,) arrays
    指定要绘制直方图的数据,必须是一维数组.使用.ravel()将你的通道值转为一维数组
  • bins:integer or sequence or ‘auto’, optional
    指定直方图条形的个数,integer 或 auto,也可以不设置.举例[1,2,3,4],则第一个柱为取值[1,2),一次类推,最后一个是取值[3,4].默认 taken from the rcParam hist.bins.
  • range:tuple or None, optional
    数组或者不给.给出数组将指定直方图数据的上下界,超出范围的舍弃.不设置的话包含绘图数据的最大值和最小值;默认为 None

基于上述内容,将一副图像的直方图显示出来。

做一些准备工作

  • x: 图像,必须是一维数组
  • 其中函数 ravel b = a.ravel()
    功能: 将多维数组降为一维数组
    格式: 一维数组=多维数组.revel()
  • bins: 一般是 256,指[0, 255]

以上内容掌握之后,就可以处理图像的直方图了,代码如下:

import cv2
from matplotlib import pyplot as plt


def plot_demo(image):
    # numpy 的 ravel 函数功能是将多维数组降为一维数组
    plt.hist(image.ravel(), 256, [0, 256])
    plt.show()


if __name__ == "__main__":
    img = cv2.imread("./106.jpg")
    cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
    cv2.imshow("input image", img)
    plot_demo(img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天

python opencv 直方图(histogram)

函数原型介绍

在 Python OpenCV 中实现直方图的函数为cv2.calcHist,原型如下:

# 返回 hist
cv2.calcHist(img, channels, mask, histSize, ranges[, hist[, accumulate ]])

参数说明:

  • img:图像,方括号方式传入,即[img]
  • channels:选取图像的哪个通道,用方括号给出的,计算直方图的 channel 的索引,如果输入时灰度图,值就是 [0],对于彩色图片,你可以传 [0][1][2] 来分别计算蓝色,绿色和红色通道的直方图;
  • mask:掩膜,如果要找整个图像的直方图,这里传入"None"。如果你想找到特定区域图片的直方图,需要使用掩膜,只计算值>0 的位置上像素的颜色直方图
  • histSize:直方图大小,BINS 数量(BINS 是啥,下面细说),要方括号传入,对于全刻度,传入 [256]
  • ranges:直方图范围,一般来说是[0,256]

关于上文提及的 BINS 等内容涉及直方图如下概念:

  • BINS: 在上面的直方图当中,如果像素值是 0 到 255,则需要 256 个值来显示直方图。
    但是,如果不需要知道每个像素值的像素数目,只想知道两个像素值范围内的像素点数目即可?首先像素值在 0--15 之间的像素点数目,然后是 16--31 ……直到 240--255,即每次间隔 16 个数字,将 256 个值分成 16 份,每份计算综合。每个分成的小组就是一个 BIN(箱)。在 opencv 中使用 histSize 表示 BINS。

彩色图像,不同通道的直方图

首先绘制蓝色通道的直方图,代码如下:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread(''./106.jpg'')
hist = cv.calcHist([img], [0], None, [256], [0,256])

plt.plot(hist, label=''B'', color=''b'')
plt.show()

运行结果如下:
Python OpenCV 图像处理之图像直方图,取经之旅第 23 天
三个通道同时绘制代码如下:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread(''./106.jpg'')
color = (''b'', ''g'', ''r'')
for i, col in enumerate(color):

    hist = cv.calcHist([img], [i], None, [256], [0, 256])
    plt.plot(hist, color=col)
    plt.xlim([0, 256])
plt.show()

BGR 直方图如下:
Python OpenCV 图像处理之图像直方图,取经之旅第 23 天

直方图均衡化 (Histogram Equalization)

如果图像的灰度分布不均匀,集中在一个比较窄的范围内,这样图像的细节就会不清晰,对比度低。

这种情况可以使用直方图均衡化,对图像进行非线性拉伸,重新分配图像的灰度值,使一定范围内图像的灰度值大致相等。

执行之后,直方图中间峰值部分对比度增强,两侧谷底部分对比度降低。图像的灰度范围拉伸之后,灰度均匀分布,反差增大,增强图像细节。

理论的东西就是上面那些了,实操起来才可以看到效果。

函数原型介绍

使用 cv2.equalizeHist 方法来得到直方图均衡化之后的图像,函数原型如下:

cv2.equalizeHist(src[, dst])

参数说明:

  • src:源图像。图像必须是灰度图。
  • dst:目标图像。

测试代码如下:

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

image = cv.imread("2o.jpg")
# 将图片转换为灰度图
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)

# 直方图绘制
hist = cv.calcHist([gray], [0], None, [256], [0, 256])
plt.plot(hist)
plt.show()

# 应用直方图均衡化
dst = cv.equalizeHist(gray)
cv.imshow("dst", dst)

# 直方图绘制
hist = cv.calcHist([dst], [0], None, [256], [0, 256])
plt.plot(hist)
plt.show()

运行结果与直方图:

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天

运行直方图均衡化之后的图像如下:
Python OpenCV 图像处理之图像直方图,取经之旅第 23 天
上述案例为灰度图直方图均衡化,对于彩色图像一样可以进行图像增强操作。

import cv2 as cv
import numpy as np
img = cv.imread(''th.jpeg'')
cv.imshow(''img'', img)
b, g, r = cv.split(img)
bH = cv.equalizeHist(b)
gH = cv.equalizeHist(g)
rH = cv.equalizeHist(r)
dst = cv.merge((bH, gH, rH))
cv.imshow(''dst'', dst)
cv.waitKey(0)

使用cv2.split函数分离图像的颜色通道,分别得到各个通道的直方图,再使用cv2.merge函数合并各通道,得到彩色图像的直方图均衡化。

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天
以上提及的叫做全局直方图均衡化,下面为大家在介绍一下局部直方图均衡化。

局部直方图均衡化在有的地方也被叫做 CLAHE 有限对比适应性直方图均衡化

大概实现过程如下:
整幅图像会被分成很多小块,这些小块被称为 “tiles”(tiles 的默认大小是 8x8),然后再对每一个小块分别进行直方图均衡化。

函数原型如下:

cv2.createCLAHE(clipLimit, tileGridSize)

参数说明:

  • clipLimit:对比度限制的阈值
  • tileGridSize:图像分割每块的尺寸,默认 8x8

运行下述代码,得到的结果可以与全局直方图均衡化做一下比较。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

image = cv.imread("2o.jpg")
# 将图片转换为灰度图
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)

# 直方图绘制
hist = cv.calcHist([gray], [0], None, [256], [0, 256])
plt.plot(hist)
plt.show()

# 应用直方图均衡化
# 1. 实例化自适应直方图均衡化函数
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
# 2. 进行自适应直方图均衡化
dst = clahe.apply(gray)
cv.imshow("dst", dst)

# 直方图绘制
hist = cv.calcHist([dst], [0], None, [256], [0, 256])
plt.plot(hist)
plt.show()

Python OpenCV 图像处理之图像直方图,取经之旅第 23 天

橡皮擦的小节

今天重点学习了一下直方图,写了这么多,只有一个原因,就是这是第二次碰到了,当一个知识点再次出现时,就要在进一步的学习下,因为大概率它是重点知识。

相关阅读


  1. Python 爬虫 100 例教程,超棒的爬虫教程,立即订阅吧
  2. Python 爬虫小课,精彩 9 讲

今天是持续写作的第 65 / 100 天。
如果你有想要交流的想法、技术,欢迎在评论区留言。


如果你想跟博主建立亲密关系,可以关注博主,或者关注博主公众号 “非本科程序员”,了解一个非本科程序员是如何成长的。
博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏

本文同步分享在 博客“梦想橡皮擦”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录

36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录

基础版学习笔记传送门
36 篇博文带你学完 opencv :python3+opencv 学习笔记汇总目录(基础版)

进阶版笔记

项目
opencv 进阶学习笔记 1: 调用摄像头用法大全(打开摄像头,打开摄像头并实时不断截屏,读取视频并截图)
opencv 进阶学习笔记 2:numpy 操作图像,色彩空间,查找指定颜色范围,通道分离与合并
opencv 进阶学习笔记 3:像素运算和图像亮度对比度调节
opencv 进阶学习笔记 4:ROI 和泛洪扩充
opencv 进阶学习笔记 5:图像模糊操作,图像锐化,边缘保留滤波 EPF(图像滤镜)
opencv 进阶学习笔记 6:使用鼠标在图像上绘制矩形框或者多边形框
opencv 进阶学习笔记 7:直方图,直方图均衡化,直方图比较,直方图反向投影
opencv 进阶学习笔记 8:模板匹配
opencv 进阶学习 9:图像阈值大全,图像二值化,超大图像二值化
opencv 进阶学习笔记 10:图像金字塔和图像梯度
opencv 进阶学习笔记 11:cannny 边缘检测,直线检测,圆检测
opencv 进阶学习笔记 12:轮廓发现和对象测量
opencv 进阶学习笔记 13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python 版
opencv 进阶学习笔记 14:分水岭算法 实现图像分割

OpenCV 告一段落,接下来,该实战啦。
计算机视觉三大任务,分类,监测,分割。
意见其他一些任务…
图像生成,OCR…


电气专业的计算机萌新,写博文不容易,如果你觉得本文对你有用,请点个赞支持下,谢谢。

AR opencv-python | cv2.error: OpenCV(4.5.1) batch_distance.cpp:275: error: (-215:Assertion failed)

AR opencv-python | cv2.error: OpenCV(4.5.1) batch_distance.cpp:275: error: (-215:Assertion failed)

如何解决AR opencv-python | cv2.error: OpenCV(4.5.1) batch_distance.cpp:275: error: (-215:Assertion failed)

我决定尝试 Ar 是什么,但遇到了以下问题:

  1. File "C:/Users/Егор/PycharmProjects/ARfotoandvideo/AR.py",line 25,in <module>
  2. macthes = bf.knnMatch(des1,des2,k=2)
  3. cv2.error: OpenCV(4.5.1) C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\pip-req-build-0ycehs0d\\opencv\\modules\\core\\src\\batch_distance.cpp:275: error: (-215:Assertion Failed) type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) in function ''cv::batchdistance''

堆栈:

  • Windows 8.1 一种语言
  • Python 3.7.7
  • Pycharm 社区 2018.3.7
  • Opencv-python 4.5.1.48
  • 网络摄像头 - 在笔记本电脑上,我无法通过 wifi 连接通过 Droidcam 应用程序使用小米手机 Redmy 的摄像头。

信息

我将尝试描述之前发生的错误以及我是如何解决它们的 - 也许这会告诉您需要做什么来解决问题。

在程序执行期间,在从网络摄像头接收图像时发生崩溃 - 正如它本身所表现的那样,当程序启动时,来自网络摄像头的图像提供单色背景(在我的情况下,绿松石) ,当我通过点击X强行关闭所有窗口后,窗口中的数据被刷新并获得正确的图像。 cv2.waitKey (100) 部分解决了这个问题,其中更改 100 的值会导致来自网络摄像头的图像出现,!!!!但 !!!因为有失败,所以没有确定性。

尝试将 cv2.error 中所有可能的错误原因联系起来后,我得出的结论是问题出在 1 和 2 图像上的描述符中。我想指出的是,当网络摄像头相对于图像移动(不是缩放,而是前后移动)时,在 30 种情况下的 1-2 种情况下,它有助于启动程序并正常工作而不会崩溃。>

我的代码

  1. import cv2
  2. import numpy as np
  3. cap = cv2.VideoCapture(1,cv2.CAP_DSHOW)
  4. imgTarget = cv2.imread(''foto.jpg'')
  5. myVid = cv2.VideoCapture(''video.mp4'')
  6. success,imgVideo = myVid.read()
  7. hT,wT,cT = imgTarget.shape
  8. imgVideo = cv2.resize(imgVideo,(wT + 400,hT))
  9. orb = cv2.ORB_create(nfeatures=10)
  10. kp1,des1 = orb.detectAndCompute(imgTarget,None)
  11. imgTarget = cv2.drawKeypoints(imgTarget,kp1,None)
  12. while True:
  13. success,imgWebcam = cap.read()
  14. kp2,des2 = orb.detectAndCompute(imgWebcam,None)
  15. imgWebcam = cv2.drawKeypoints(imgWebcam,kp2,None)
  16. # imgWebcam = cv2.resize(imgWebcam,(wT,hT))
  17. bf = cv2.BFMatcher()
  18. macthes = bf.knnMatch(des1,k=2)
  19. good = []
  20. for m,n in macthes:
  21. if m.distance < 0.75 * n.distance:
  22. good.append(m)
  23. print(len(good))
  24. imgFeatures = cv2.drawMatches(imgTarget,imgWebcam,good,None,flags=2)
  25. if len(good) > 20:
  26. srcPts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1,1,2)
  27. dstPts = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1,2)
  28. matrix,mask = cv2.findHomography(srcPts,dstPts,cv2.RANSAC,5)
  29. print(matrix)
  30. pts = np.float32([[0,0],[0,wT],[wT,hT],0]]).reshape(-1,2)
  31. dst = cv2.perspectiveTransform(pts,matrix)
  32. img2 = cv2.polylines(imgWebcam,[np.int32(dst)],True,(255,255),3)
  33. cv2.imshow(''img2'',img2)
  34. cv2.imshow(''imgFeatures'',imgFeatures)
  35. cv2.imshow(''imgTarget'',imgTarget)
  36. cv2.imshow(''myVid'',imgVideo)
  37. cv2.imshow(''imgWebcam'',imgWebcam)
  38. cv2.waitKey(100)

cv2.error: OpenCV(4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: error:

cv2.error: OpenCV(4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: error:

image1=Image.fromarray(cv2.cvtColor(image01,cv2.COLOR_BGR2RGB))
cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ''cvtColor''

这个错误纠结了一周,网上找遍了答案,加上自己根据他们错误找,大多数都是图片路径,或者图片本身的错误

 

我自己的错误是 xml 转 json 文件出错,在看完一周重新分割数据以及转 json,终于可以运行。

 

这类错误大多数是图片路径读取有问题,大家可以先去找图片路径拼接那块是不是出现 None,可以适当打印出路径来调试,当然出现这种错误,最先看看,自己对图片的处理是不是正确的,基本上跑源码,除了个别修改配置文件,其他没问图,所以最讨厌的问题得抓最核心的地方,毕竟时间宝贵!!!

OpenCV - Windows(win10)编译 opencv + opencv_contrib

OpenCV - Windows(win10)编译 opencv + opencv_contrib

  在之前的几篇文章中,我提到了在 Android、Linux 中编译 opencv + opencv_contrib,这篇文章主要讲在 Windows 中编译 opencv + opencv_contrib。

首先需要准备的环境有:

  • Window 10 64 位:这个大家都知道,就不多说了啊;
  • Cmake:编译工具,可以 https://cmake.org/download/ 下载安装,当前的最新版本为 3.10.1;
  • Visual Studio:开发工具,编译的时候也需要用到,我安装的是 Visual Studio 2015。
  • OpenCV Windows 包,下载地址:https://opencv.org/releases.html;
  • OpenCV_Contrib 包,下载地址:https://github.com/opencv/opencv_contrib(注意版本对应)。

  将下载得到的 OpenCV Windows 包解压,目录为 opencv,然后将下载的 OpenCV_Contrib 包解压放入 opencv 目录下,新建 new_build 文件夹(用来放编译之后结果):

    

使用 cmake 生成 OpenCV.sln:

  打开安装之后的 cmake,在 where is the source code 中选择 openCV 的源代码目录:F:\opencv\sources;在 where to build the binaries 中选择编译为 Visual Studio 项目的目录:F:\opencv\new_build(这里我选择刚刚特地建立的 new_build 目录),如下图所示:

    

  点击 Configure 按钮后,弹出对话框,选择编译器,根据本地计算机的 CPU 架构,这里特别要注意的是,自己机器上是否装有相应的 VS 版本,如果没有装,还是要编译就会出错,可能是找不到对应的工具原因,以及选择 X86 和 X64),这里用的是 VS 2015。

    

  设置完成之后点击 “Generate” 开始生成工程,. 第一次编译完成之后,我们需要将额外的 opencv_contrib 加到工程中进行第二次编译,在配置表中找到 “OPENCV_EXTRA_MODULES_PATH”, 设置其参数值为 open_contrib 源码包中的 modles 目录,我的目录是 “F:\opencv\opencv_contrib\modules”:

    

  再次点击 “Generate” 进行第二次编译:

    

  这时候我们已经可以看见用 cmake 工具编译得到的 OpenCV.sln:

    

用 VS 打开 OpenCV.sln 工程,编译生成 Debug 和 Release 库:

  用 VS 2015 打开 OpenCV.sln 工程,在解决方案中可以查看工程目录:

    

  编译生成 debug 版本的库,记得在此之前要选择编译的平台信息,这就是编译生成 debug 版本和 release 版本的区别,也可以选择 release,因为自己的工程可能要用到相应的动态链接库:

    

  在解决方案中选中工程,右键选择重新生成解决方案:

    

  编译成功:

    

  . 找到 CMakeTargets 中的 INSTALL,然后右键选择 “仅限于项目”-->“仅生成 INSTALL”:

    

  完成编译后,Release 模式下同理。此时,有了 install 目录。该目录包含了我们需要的头文件、库文件。

    

把新的库文件配置到到项目中:

   VC++ 目录 --> 包含目录,添加:

    E:\OpenCV320\opencv\new_build\install\include

  VC++ 目录 --> 库目录,添加:

    E:\OpenCV320\opencv\new_build\install\x64\vc14\lib

  链接器 --> 输入 --> 附加依赖项,添加: (注意添加的库与编译选项要一致,需要注意 debug 比 release 的文件名多了个 d)

    opencv_aruco320.lib

    opencv_aruco320d.lib

    opencv_bgsegm320.lib
    opencv_bgsegm320d.lib
    opencv_bioinspired320.lib
    opencv_bioinspired320d.lib
    opencv_calib3d320.lib
    opencv_calib3d320d.lib
    opencv_ccalib320.lib
    opencv_ccalib320d.lib
    opencv_core320.lib
    opencv_core320d.lib
    opencv_datasets320.lib
    opencv_datasets320d.lib
    opencv_dnn320.lib
    opencv_dnn320d.lib
    opencv_dpm320.lib
    opencv_dpm320d.lib
    opencv_face320.lib
    opencv_face320d.lib
    opencv_features2d320.lib
    opencv_features2d320d.lib
    opencv_flann320.lib
    opencv_flann320d.lib
    opencv_fuzzy320.lib
    opencv_fuzzy320d.lib
    opencv_highgui320.lib
    opencv_highgui320d.lib
    opencv_imgcodecs320.lib
    opencv_imgcodecs320d.lib
    opencv_line_descriptor320.lib
    opencv_line_descriptor320d.lib
    opencv_ml320.lib
    opencv_ml320d.lib
    opencv_objdetect320.lib
    opencv_objdetect320d.lib
    opencv_optflow320.lib
    opencv_optflow320d.lib
    opencv_phase_unwrapping320.lib
    opencv_phase_unwrapping320d.lib
    opencv_photo320.lib
    opencv_photo320d.lib
    opencv_plot320.lib
    opencv_plot320d.lib
    opencv_reg320.lib
    opencv_reg320d.lib
    opencv_rgbd320.lib
    opencv_rgbd320d.lib
    opencv_saliency320.lib
    opencv_saliency320d.lib
    opencv_shape320.lib
    opencv_shape320d.lib
    opencv_stereo320.lib
    opencv_stereo320d.lib
    opencv_stitching320.lib
    opencv_stitching320d.lib
    opencv_structured_light320.lib
    opencv_structured_light320d.lib
    opencv_superres320.lib
    opencv_superres320d.lib
    opencv_surface_matching320.lib
    opencv_surface_matching320d.lib
    opencv_text320.lib
    opencv_text320d.lib
    opencv_tracking320.lib
    opencv_tracking320d.lib
    opencv_video320.lib
    opencv_video320d.lib
    opencv_videoio320.lib
    opencv_videoio320d.lib
    opencv_videostab320.lib
    opencv_videostab320d.lib
    opencv_xfeatures2d320.lib
    opencv_xfeatures2d320d.lib
    opencv_ximgproc320.lib
    opencv_ximgproc320d.lib
    opencv_xobjdetect320.lib
    opencv_xobjdetect320d.lib
    opencv_xphoto320.lib
    opencv_xphoto320d.lib
    kernel32.lib
    user32.lib
    gdi32.lib
    winspool.lib
    comdlg32.lib
    advapi32.lib
    shell32.lib
    ole32.lib
    oleaut32.lib
    uuid.lib
    odbc32.lib
    odbccp32.lib

  这样,我们就可以在 VS 中使用 OpenCV 了。

 

  需要提到的一个点,所需要使用 Sift 等算法,需要引入 xfeatures2d 命名空间:

using namespace xfeatures2d;

 

   

我们今天的关于Python OpenCV 图像处理之图像直方图,取经之旅第 23 天python opencv直方图均衡的分享就到这里,谢谢您的阅读,如果想了解更多关于36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录、AR opencv-python | cv2.error: OpenCV(4.5.1) batch_distance.cpp:275: error: (-215:Assertion failed)、cv2.error: OpenCV(4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: error:、OpenCV - Windows(win10)编译 opencv + opencv_contrib的相关信息,可以在本站进行搜索。

本文标签: