
opencv-python 学习笔记
从头开始学习opencv
默执_
生如蝼蚁当立鸿鹄之志,命薄如纸应有不屈之心。
展开
-
opencv-python---李博文索引
opencv-python 目录索引opencv安装opencv读取、保存图像、截图、三通道opencv连接网络摄像头opencv视频读取、保存opencv手动绘图:线、正矩形、圆、椭圆、多边形、文字opencv缩放、加法、比例混合opencv查看代码运行时间的两种方法opencv颜色空间转换(灰度图、HSV)opencv颜色空间转换、阈值构建掩膜、原图像和掩模进行位运算opencv图像平移、旋转、仿射变换、透视变换opencv 二值化、自适应二值化、Otsu’s 二值化opencv原创 2022-01-25 15:32:33 · 1901 阅读 · 2 评论 -
opencv-python 分离边缘粘连的物体(距离变换)
【代码】opencv-python 分离边缘粘连的物体(距离变换)原创 2024-11-20 18:22:03 · 576 阅读 · 0 评论 -
opencv-python 例子:拉普拉斯变换-查找圆形
原图:来自公众号opencv与深度学习。重点在于拉普拉斯变换和参数调整。自测效果:圆查找并计数。原创 2024-09-23 15:57:52 · 382 阅读 · 0 评论 -
opencv 绘制内切圆
先上效果图:原图:思路:主要使用 cv2.pointPolygonTest 来寻找图像中所有点与轮廓的最短距离,根据函数的特性,轮廓外为负轮廓内为正,再使用 cv2.minMaxLoc 筛选,提取我们取最大值索引就是圆心坐标,最大值就是圆心半径。详细说明:cv2.pointPolygonTestPoint Polygon Test求解图像中的一个点到一个对象轮廓的最短距离。如果点在轮廓的外部,返回值为负。如果在轮廓上,返回值为 0。如果在轮廓内部,返回值为正。下面我们以点(50,50)为原创 2022-03-09 11:12:31 · 6260 阅读 · 1 评论 -
OpenCV简单图像分割
这里主要基于 OpenCV 和 Scikit-learn 实现四种图像分割:基于 K-means基于 Contour Detection基于 Thresholding基于 Color Masking HSV颜色空间,就不演示了。HSV颜色空间阈值调节器在我的opencv工具内原图:K-meansimport numpy as npimport cv2def cv_show(neme, img): cv2.namedWindow(neme, cv2.WINDOW_NORMA原创 2022-03-05 09:56:22 · 4930 阅读 · 0 评论 -
opencv 特征匹配
gg1.jpggg.jpgimport numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltMIN_MATCH_COUNT = 10img1 = cv.imread('gg1.jpg', 0) # 索引图像 小img2 = cv.imread('gg.jpg', 0) # 训练图像 全# 初始化SIFT检测器sift = cv.xfeatures2d.SIFT_create()# 用SIFT找到关键点和.原创 2022-03-03 14:25:31 · 442 阅读 · 0 评论 -
opencv去除静态背景
import numpy as npimport cv2cap = cv2.VideoCapture(0)# 核函数 方式一 核函数:3*3 5*5 7*7 都可以# kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))# 核函数 方式二kernel = np.ones((3, 3), np.uint8)# 静态背景去除(注意:光照会影响判断)fgbg = cv2.createBackgroundSubtract.原创 2022-02-27 18:27:06 · 4240 阅读 · 0 评论 -
opencv 摄像机标定-畸形矫正
原图矫正后我新建了个jz的文件夹放相机矫正所需要拍摄的图片,如下:共12张# coding:utf-8import cv2import numpy as npimport glob# 找棋盘格角点# 阈值criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)# 棋盘格模板规格 从0开始计算w = 9h = 6# 世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0原创 2022-02-03 19:08:28 · 9910 阅读 · 5 评论 -
opencv 3种角点检测
import cv2import numpy as npfrom matplotlib import pyplot as pltdef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 第一个# Harris 角点检测 cv2.cornerHarris()im原创 2022-01-26 18:10:07 · 2524 阅读 · 0 评论 -
opencv GrabCut 算法进行交互式前景提取
前后景分割import cv2import numpy as npfrom matplotlib import pyplot as pltdef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 矩形框 前后景分割img = cv2.imread('1.jpg原创 2022-01-26 17:47:05 · 1220 阅读 · 0 评论 -
opencv图像分割分水岭
import cv2import numpy as np# 自带分水岭 可以自己研究一下from cv2 import watersheddef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread('yingbi.jpg')gray原创 2022-01-26 11:57:30 · 2117 阅读 · 0 评论 -
opencv霍夫变换 直线检测、圆环检测
import cv2import numpy as npdef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 霍夫变换 直线检测img = cv2.imread('1.jpg')gray = cv2.cvtColor(img, cv2.COLOR_BGR2G原创 2022-01-26 11:22:04 · 522 阅读 · 0 评论 -
opencv 模板匹配
import cv2import numpy as npdef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 大图img_rgb = cv2.imread('0.jpg')# 灰度图img_gray = cv2.cvtColor(img_rgb, cv2.原创 2022-01-26 10:27:58 · 1794 阅读 · 0 评论 -
opencv简单形状匹配
两张图像进行比较,查看轮廓形状相似度import cv2import numpy as npdef cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img1 = cv2.imread("ce.png", 0)img2 = cv2.imread("ce.png",原创 2022-01-25 17:05:09 · 1347 阅读 · 0 评论 -
opencv轮廓面积、周长
import cv2def cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread('1.png')# 灰度图imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化ret, thresh原创 2022-01-19 11:41:26 · 228 阅读 · 0 评论 -
opencv 简单轮廓绘制、外接矩形、外接旋转矩形、外接圆、轮廓近似,可倾斜,非矩形、凸包、4极点检测、
import cv2def cv_show(neme, img): cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 图像轮廓img = cv2.imread('1.png')# 灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值处理ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRES原创 2022-01-19 10:22:35 · 3326 阅读 · 0 评论 -
opencv Canny 边缘检测
Canny 边缘检测def cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread('1.png', 0)# Canny 边缘检测(图像、min值、max值)edges = cv2.Canny(img, 100, 200)cv_show("s原创 2022-01-18 17:46:40 · 1245 阅读 · 0 评论 -
opencv 三种不同的梯度滤波器:Sobel算子、Scharr算子、Laplacian算子
图像滤波增强处理实质上就是运用滤波技术来增强图像的某些空间频率特征,以改善地物目标与领域或背景之间的灰度反差。 遥感系统成像过程中可能产生的”模糊”作用,常使遥感图像上某些用户感兴趣的线性形迹、纹理与地物边界等信息显示得不够清晰, 不易识别。需要通过采用领域处理方法来分析、比较和调整像元与其周围相邻像元间的对比度关系,图像才能得到增加,也就是说 需要采用滤波增加技术处理。import cv2import numpy as npdef cv_show(neme, img): cv原创 2022-01-18 17:28:40 · 1550 阅读 · 0 评论 -
opencv 形态学操作:腐蚀、膨胀、开或闭运算、梯度、礼帽、黑帽
import cv2import numpy as npdef cv_show(neme, img): cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()# 形态学--腐蚀化 一般是黑色背景,白色字体# 卷积核设定# np.uint8是将这个处理的过程就是图像的float类型转变为uint8类型过程。# float类型取值范围 :-1 到1 或者 0到1# uint8类型取值范围:0到25原创 2022-01-17 15:39:34 · 364 阅读 · 0 评论 -
opencv 均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波
import cv2def cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread('1.png')# 均值滤波# 简单的平均卷积操作blur = cv2.blur(img, (3, 3))cv_show("s", blur)#原创 2022-01-17 14:59:33 · 449 阅读 · 0 评论 -
opencv 二值化、自适应二值化、Otsu’s 二值化
普通二值化import cv2def cv_show(neme, img): # cv2.namedWindow(neme, cv2.WINDOW_NORMAL) cv2.imshow(neme, img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread('1.png')# # 灰度化img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化# 大于12原创 2022-01-17 14:52:31 · 980 阅读 · 0 评论 -
opencv图像平移、镜像、旋转、仿射变换、透视变换
图像平移import cv2import numpy as npimg = cv2.imread("1.jpg")rows, cols = img.shape[0], img.shape[1]# M = np.float ([[1,0,x轴 左向右移动多少],[0,1,y轴 上向下移动多少]]) # 必须是foat32M = np.float32([[1, 0, 100], [0, 1, 0]])# 移动函数:参数(原图、平移多少、(背景高、宽))dst = cv2.warpAff原创 2022-01-15 21:02:00 · 702 阅读 · 0 评论 -
opencv颜色空间转换、阈值构建掩膜、原图像和掩模进行位运算
注意:转HSV颜色空间后,可以进行颜色阈值调整构建掩膜后的图像是黑白的对原图像和掩模进行位运算后,图像就只有你想要的颜色阈值,其他颜色都变为黑色import cv2import numpy as npcap = cv2.VideoCapture(0)while (1): # 获取每一帧 ret, frame = cap.read() # 转换到 HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 设原创 2022-01-15 19:34:33 · 985 阅读 · 0 评论 -
opencv颜色空间转换(灰度图、HSV)
打印目前所有颜色空间转换(我试了一下,已经存在346种了)flags = [i for i in dir(cv2) if i.startswith('COLOR_')]、print(len(flags))颜色空间转换使用函数cv2.cvtColor(input_image ,flag),flag是转换类型灰度图 BGR↔Graycv2.COLOR_BGR2GRAYHSV 颜色空间 BGR↔HSVcv2.COLOR_BGR2HSVimage = cv2.cvtColor(img, cv2.原创 2022-01-15 18:42:28 · 1376 阅读 · 0 评论 -
opencv查看代码运行时间的四种方法
方法一import timet1 = time.time()# 需要测试的代码t2 = time.time()print("以上代码运行时长:", t2-t1)方法二如果使用cv2时,建议使用第二种方法import cv2e1 = cv2.getTickCount()# 需要测试的代码e2 = cv2.getTickCount()time = (e2 - e1) / cv2.getTickFrequency()print("以上代码运行时长:",time)......原创 2022-01-15 18:28:37 · 1463 阅读 · 0 评论 -
opencv缩放、加法、比例混合
# 图像缩放image = cv2.resize(img, (224, 224))说明:也有按比例缩放,需要用到时,再查吧# 图像加法 注意图像大小需要一致img = cv2.add(img1, img2)说明:也可以直接 img1+ img2,但是使用以上方法更好# 比例混合图像 注意图像大小需要一致# 参数(图像1、混合比例、图像2、混合比例、整体加上0~255颜色 超过范围无意义,但不报错)dst = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)原创 2022-01-15 18:23:21 · 571 阅读 · 0 评论 -
opencv手动绘图:线、正矩形、圆、椭圆、多边形、文字
import cv2import numpy as npdef cv_show(neme, img): cv2.imshow(neme, img) # 必要参数:名字和变量名 cv2.waitKey(0) # 括号中0=任意键终止,单位为毫秒级别 cv2.destroyAllWindows() # 关闭所有窗口--图片# 可以读取一张图像,或者生成一个矩阵img = np.zeros((512, 512, 3), np.uint8)# 画线 参数:图像、坐标原创 2022-01-13 16:17:25 · 512 阅读 · 0 评论 -
opencv视频读取、保存
直接读取本地摄像头 或者 视频文件import cv2# 本地摄像头为0 或者是其他设备索引号,也可以是一个视频文件# cap = cv2.VideoCapture(0)cap = cv2.VideoCapture("./1208hz10.avi")# .isOpened() 如果为真,说明可以读取while cap.isOpened(): ret, frame = cap.read() # 绘制图像 cv2.imshow('frame', frame) if原创 2022-01-13 15:05:37 · 2301 阅读 · 0 评论 -
opencv连接网络摄像头、获取某一帧
import cv2url = 'rtsp://admin:tongshang610@192.168.31.57:554//Streaming/Channels/2'cap = cv2.VideoCapture(url)while (cap.isOpened()): print('xxx') ret, frame = cap.read() cv2.imshow('frame', frame) if cv2.waitKey(1) & 0xFF == ord('q'原创 2022-01-13 10:39:53 · 4670 阅读 · 0 评论 -
opencv读取、保存图像、截图、判断是否为cv图类型、图像水平与垂直拼接、三通道、
import cv2def cv_show(neme, img): cv2.imshow(neme, img) # 必要参数:名字和变量名 cv2.waitKey(0) # 括号中0=任意键终止,单位为毫秒级别 cv2.destroyAllWindows() # 关闭所有窗口--图片image = cv2.imread("./8.jpg")cv_show("name", image)...原创 2022-01-13 10:00:21 · 800 阅读 · 0 评论 -
opencv安装
清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/豆瓣:http://pypi.douban.com/simple/pip install opencv原创 2022-01-13 09:58:04 · 472 阅读 · 0 评论