![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV学习之路
文章平均质量分 92
X1996_
这个作者很懒,什么都没留下…
展开
-
模板匹配找人脸区域再识别口罩
一、先用模板匹配找出人脸区域,然后再匹配口罩import cv2 as cvimport numpy as npcap = cv.VideoCapture(0) #也可以通过1选择第二个摄像头while True: ret, frame = cap.read() #第一个参数判断是否读取到帧 frame = cv.flip(frame, 1) #把图像翻转,可以试试要这一句和不要的区别,参数可以改 img_gray = cv.cvtColor(frame, cv.CO原创 2020-08-02 13:02:00 · 211 阅读 · 0 评论 -
Opencv模板匹配学习
模板匹配:一、单对象模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。它只是将模板图像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的拼图。如果输入图像的大小为(WxH),而模板图像的大小为(wxh),则输出图像的大小将为(W-w + 1,H-h + 1)。得到结果后,可以使用cv.minMaxLoc()函数查找最大/最小值在哪。将其作为矩形的左上角,并以(w,h)作为矩形的宽度和高度。该矩形是原创 2020-08-02 11:16:37 · 517 阅读 · 0 评论 -
图像直方图:查找、绘制、分析
使用OpenCV和Matplotlib函数绘制直方图 :cv.calcHist(),np.histogram()直方图可以总体了解图像的强度分布。通过查看图像的直方图,您可以直观地了解该图像的对比度,亮度,强度分布等。直方图的左侧区域显示图像中较暗像素的数量,而右侧区域则显示明亮像素的数量。一、寻找直方图BINS:上面的直方图显示每个像素值的像素数,即从0到255。如果找介于0到15之间的像素数,然后找到16到31之间,…,240到255之间的像素数。只需要16个值即可表示直方图。因此,您要做的就是将原创 2020-07-24 16:18:08 · 741 阅读 · 0 评论 -
OpenCV图像轮廓的简单学习
学了一点基本函数的用法,后面的感觉不怎么理解,就没敲了import numpy as npimport cv2 as cvim = cv.imread('E:\\python opencv\\demo2\\aa1.png')cv.imshow('im', im)#转换为灰度图像imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)cv.imshow('imgray', imgray)#设置阈值ret, thresh = cv.threshold(imgray原创 2020-07-23 15:44:01 · 117 阅读 · 0 评论 -
OpenCV图像金字塔和图片融合及出现问题分析
一、图像金字塔我们把具有不同分辨率的图像集称为“图像金字塔”(因为当它们堆叠在底部时,最高分辨率的图像位于顶部,最低分辨率的图像位于顶部时,看起来像金字塔)。有高斯金字塔和拉普拉斯金字塔我们可以使用cv.pyrDown()和cv.pyrUp()函数找到高斯金字塔。拉普拉斯金字塔由高斯金字塔形成。没有专用功能。拉普拉斯金字塔图像仅像边缘图像。它的大多数元素为零。它们用于图像压缩。import cv2 as cvimg = cv.imread('E:\\python opencv\\demo2\\原创 2020-07-22 17:03:17 · 1185 阅读 · 1 评论 -
OenCV 图像梯度与边缘检测
本章学习查找图像梯度,边缘等,将使用cv.Sobel(),cv.Scharr(),cv.Laplacian()等一、图线梯度OpenCV提供三种类型的梯度滤波器或高通滤波器,即Sobel,Scharr和Laplacian。Sobel和Scharr算子,Laplacian算子Sobel算子是高斯平滑加微分运算的联合运算,因此它更抗噪声。逆可以指定要采用的导数方向,垂直或水平(分别通过参数yorder和xorder)。逆还可以通过参数ksize指定内核的大小。如果ksize = -1,则使用3x3 S原创 2020-07-22 15:19:34 · 192 阅读 · 0 评论 -
图像简单处理,形态学转换
一、*这一章中,*我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。我们将看到不同的功能,例如:cv.erode(),cv.dilate(), cv.morphologyEx()等。理论:形态变换是一些基于图像形状的简单操作。通常在二进制图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核**。两种基本的形态学算子是侵蚀和膨胀。然后,它的变体形式(如“打开”,“关闭”,“渐变”等)也开始起作用。一、侵蚀以上面图像为输入,侵蚀的基本思想就像土壤侵蚀一样,它原创 2020-07-22 11:37:33 · 190 阅读 · 0 评论 -
图像平滑上的东西
一、2D卷积(图像过滤)OpenCV提供了一个函数cv.filter2D来将内核与图像进行卷积操作如下:保持这个内核在一个像素上,将所有低于这个内核的25个像素相加,取其平均值,然后用新的平均值替换中心像素。它将对图像中的所有像素继续此操作。二、图像模糊(图像平滑)通过将图像与低通滤波器内核进行卷积来实现图像模糊。这对于消除噪音很有用。它实际上从图像中消除了高频部分(例如噪声,边缘)。因此,在此操作中边缘有些模糊。(有一些模糊技术也可以不模糊边缘)。OpenCV主要提供四种类型的模糊技术。1.平均原创 2020-07-21 14:42:00 · 101 阅读 · 0 评论 -
图像阈值学习
一、简单阈值:函数cv.threshold用于应用阈值。第一个参数是源图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三个参数是分配给超过阈值的像素值的最大值。OpenCV提供了不同类型的阈值,这由函数的第四个参数给出。所有简单的阈值类型为:cv.THRESH_BINARYcv.THRESH_BINARY_INVcv.THRESH_TRUNCcv.THRESH_TOZEROcv.THRESH_TOZERO_INV该方法返回两个输出。第一个是使用的阈值,第二个输出是阈值后的图原创 2020-07-21 14:14:48 · 187 阅读 · 0 评论 -
图像的几何变换,缩放,平移,旋转、仿射和透视
一、图像的几何变换,缩放,平移,旋转#图像的几何变换,缩放,平移,旋转、仿射、透视import cv2 as cvimport numpy as npimg1 = cv.imread("E:\\python opencv\\demo2\\a.jpg")cv.imshow("image", img1)#缩放 cv.resize()res = cv.resize(img1, None, fx=1, fy=2, interpolation=cv.INTER_CUBIC)res1 = cv.re原创 2020-07-21 11:48:55 · 258 阅读 · 0 评论 -
图像合并以及颜色追踪
一、把两张图片按不同权重合并import cv2 as cvimg1 = cv.imread("E:\\python opencv\\demo2\\a.jpg")img2 = cv.imread("E:\\python opencv\\demo2\\b.jpg")#两张图片像素需要一样,不然会报错#按不同的比例把两张图片放在一起dst = cv.addWeighted(img1, 0.3, img2, 0.7, 0)cv.imshow('dst', dst)cv.waitKey(0)cv.原创 2020-07-21 11:06:16 · 146 阅读 · 0 评论 -
图像的形状,总像素读取,提取需要的部分,拆分与合并,以及加边框
import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread("E:\\python opencv\\demo2\\a.jpg")print(img.shape) #访问图像形状print(img.size) #访问总像素print(img.dtype) #获取图像数据类型ball = img[100:200, 150:350] #提取出img像素这一块cv.imshow('im原创 2020-07-20 22:02:57 · 212 阅读 · 0 评论 -
Opencv python画图
import cv2 as cvimport numpy as np#先画一张底图img = np.zeros((512, 512, 3), np.uint8)#在img底图上画一条线段,第一个其实坐标,二终点,三颜色,四线条长度cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)#矩形,左上角和右下角cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)#圆,圆心坐标,半径cv.circl原创 2020-07-20 16:38:59 · 175 阅读 · 0 评论 -
OpenCV Python笔记本摄像头,视频写入以及输出
一、用摄像头直接读取外界图像并显示import cv2 as cvcap = cv.VideoCapture(0) #也可以通过1选择第二个摄像头if not cap.isOpened(): print("Cannot open camera") exit()while True: ret, frame = cap.read() #第一个参数判断是否读取到帧 if not ret: print("fail") break原创 2020-07-20 13:37:01 · 479 阅读 · 0 评论 -
Windows7+OpenCV安装过程
最近开始打算学图线处理,一般先开始装软件都要搞两天,分别装了Anaconda3+OpenCV+Pycharm免费版和 cmake-3.18.0+opencv-3.4.1+VS2019;一开始装的VS这种,准备搞c++弄,但是有个同学说搞python一起学,所以又装了。网上教程一大堆,还是搞了两天,有些小问题解决不了就只有重装了。一、Anaconda3+OpenCV+Pycharm免费版不需要提前配置python环境,Anaconda里有1.安装Anacondaa 下载地址b 下载后安装,原创 2020-07-20 11:43:39 · 538 阅读 · 0 评论 -
OpenCV python图像输入输出
import cv2 as cvimg = cv.imread("E:\\python opencv\\demo2\\a.jpg") #读原图img1 = cv.imread("E:\\python opencv\\demo2\\a.jpg", 0) #读取灰色图像cv.imshow("input", img) #显示图线k = cv.waitKey(0) & 0xFF #返回按键值,无按下-1if k == 27: cv.destroyAllWi原创 2020-07-20 11:00:25 · 507 阅读 · 0 评论 -
error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘ inshow错误
import cv2 as cvimg = cv.imread("a.jpg")cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)cv.imshow("input image", img)cv.waitKey(0)cv.destroyAllWindows()运行错误:cv.imshow(“input image”, img)cv2.error: OpenCV(4.2.0) D:\Build\OpenCV\opencv-4.2.0\modul原创 2020-07-20 10:13:12 · 1200 阅读 · 0 评论