Python OpenCV 图像学习
图像处理学习记录
一头秀发的假程序猿
国内某大学研究生,搞搞电路,搞搞单片机、无人机、智能车,搞搞嵌入式Linux,搞搞Python,搞搞图像处理,搞搞机器学习。。
展开
-
Matlab 双目相机标定 opencv应用
只记录坑点注意点:1.双目数据获得原始数据获得----其实是一张图片,从中间一分为二,分别为左右相机画面cap = cv2.VideoCapture(1)cap.set(3,1280)cap.set(4,480)while True: ret1, frame = cap.read() # ret2, frame2 = camera2.read() # if not ret1 or not ret2: if ret1 != True: b原创 2021-11-11 15:26:43 · 3797 阅读 · 1 评论 -
Python 1.人脸识别 OpenCV Linux
转自https://blog.csdn.net/chen801090/article/details/95072592,原文是对黄家驹和黄家强识别,不同之处本文换为万茜和江疏影,自行脑补为啥选她们吧。。。另外添上识别器在链接里一块下载https://download.csdn.net/download/qq_36071362/12107567,别的没啥不一样,就是觉得有用放自己博客里吧,另外看评论...原创 2020-01-16 20:17:04 · 505 阅读 · 2 评论 -
Python 2.打开摄像头,保存图片 OpenCV Linux
import numpy as npimport cv2#调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2cap = cv2.VideoCapture(0)while True: #从摄像头读取图片 sucess, img = cap.read() #转为灰度图片 gray = cv2.cvtColor(img, cv2.COLO...原创 2020-01-20 17:39:41 · 736 阅读 · 0 评论 -
Python 3.打开摄像头,保存AVI视频 OpenCV Linux
import cv2import numpy as npfrom matplotlib import pylab as plt'''img = cv2.imread('pic1.png', 2)plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')plt.xticks([]),plt.yticks([])plt.show...原创 2020-01-21 08:34:36 · 501 阅读 · 0 评论 -
Python 4.图片上绘制直线,圆,椭圆,文字,多边形 OpenCV Linux
import cv2import numpy as npfrom matplotlib import pylab as pltimg = cv2.imread('pic1.png', 1)#plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')#plt.xticks([]),plt.yticks([])#plt.sho...原创 2020-01-21 12:20:11 · 2931 阅读 · 0 评论 -
Python 5. 获取并改变某个像素或整个图片的BGR值,获取ROI区域OpenCV Linux
import cv2import numpy as npimg = cv2.imread('pic1.png')# get the BGR valuepx = img[100, 100]print(px)blue = img[100, 100, 0]print(blue)# get the argument of imageprint(img.shape)print(i...原创 2020-01-27 16:06:23 · 808 阅读 · 0 评论 -
Python 6.给图片添加边框(重复,复制,纯色等) OpenCV
import cv2import numpy as npfrom matplotlib import pyplot as pltBLUE = [255, 0, 0]img1 = cv2.imread('pic1.png', 1)# change the value of bgrb, g, r = cv2.split(img1)img2 = cv2.merge([r, g, ...原创 2020-01-28 08:39:50 · 955 阅读 · 0 评论 -
Python 7.OpenCV 获取执行时间 抠图添加到另一个图、按位运算
import cv2import numpy as npimg1 = cv2.imread('pic1.png')img2 = cv2.imread('logo.png')rows, cols, channels = img2.shaperoi = img1[0:rows, 0:cols]img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2G...原创 2020-01-29 17:46:11 · 344 阅读 · 0 评论 -
Python 8. OpenCV HSV色彩空间,寻找摄像头中的蓝色部分
import cv2import numpy as np# 在摄像头的视频中寻找蓝色物体,并进行掩膜cap = cv2.VideoCapture(0)while(1): # 获取每一帧图片 ret, frame = cap.read() # 转换到HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)...原创 2020-01-29 21:17:03 · 1081 阅读 · 0 评论 -
Python 10.OpenCV 放大图片旋转图片等
import cv2import numpy as npimg = cv2.imread('pic1.png')res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)# OR# 直接设置输出图像的尺寸height, width = img.shape[:2]res = cv2.resize(...原创 2020-01-29 21:19:40 · 276 阅读 · 0 评论 -
Python 9. OpenCV 仿射变换
import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('pic3.PNG')cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()rows, cols = img.shape[:2]pts1 = np...原创 2020-01-29 21:19:42 · 373 阅读 · 0 评论 -
Python 11. OpenCV 透视变换
import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('pic4.PNG')rows, cols = img.shape[:2]cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()pts1 = np...原创 2020-01-29 23:35:42 · 411 阅读 · 0 评论 -
Python 12. OpenCV 简单阈值
import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('pic1.PNG')'''cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()'''ret, thresh1 = cv2.threshold(...原创 2020-01-29 23:38:43 · 115 阅读 · 0 评论 -
Python 13.OpenCV 自适应阈值
import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('pic3.PNG', 0)img = cv2.medianBlur(img, 5)ret, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)th2 = c...原创 2020-01-29 23:40:21 · 305 阅读 · 0 评论 -
Python 14. OpenCV 2D卷积
img = cv2.imread('pic2.PNG')kernel = np.ones((5, 5), np.float32)/25# 2D卷积,低通滤波dst = cv2.filter2D(img, -1, kernel)cv2.imshow('img', img)cv2.imshow('dst', dst)cv2.waitKey(0)cv2.destroyAl...原创 2020-01-30 10:23:09 · 955 阅读 · 0 评论 -
Python 15. OpenCV 图像模糊 高斯滤波 中值滤波 双边滤波等
import cv2import numpy as npimg = cv2.imread('logo.png')img1 = cv2.imread('logo1.png')img2 = cv2.imread('pic6.PNG')# 图像模糊,图像平滑# 平均# 高斯模糊# 中值模糊# 双边滤波blur1 = cv2.blur(img, (5, 5))blur2 = c...原创 2020-01-30 10:24:25 · 586 阅读 · 0 评论 -
Python 16.OpenCV 腐蚀,膨胀,开运算, 闭运算,礼帽,黑帽
import cv2import numpy as npimg = cv2.imread('pic7.PNG', 0)img1 = cv2.imread('pic8.PNG', 0)img2 = cv2.imread('pic9.PNG', 0)kernel = np.ones((5, 5), np.uint8)# 腐蚀erosion = cv2.erode(img, kern...原创 2020-01-30 18:03:56 · 245 阅读 · 0 评论 -
Python 17.OpenCV 图像金字塔,图像融合
import cv2import numpy as npA = cv2.imread('test1.png')B = cv2.imread('test2.png')G = A.copy()gpA = [G]for i in range(6): G = cv2.pyrDown(G) gpA.append(G)G = B.copy()gpB = [G]for ...原创 2020-01-31 09:45:47 · 429 阅读 · 0 评论 -
Python 18.opencv 轮廓相关,凸包检测,外接矩形、圆,极点,平均颜色,轮廓内像素点
import cv2import numpy as npimg = cv2.imread('pic5.PNG')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(gray, 127, 255, 0)contours, hierarchy = cv2.findContours(thresh, ...原创 2020-02-07 13:15:50 · 1713 阅读 · 0 评论 -
Python 19.opencv 形状匹配,输出相似率
import cv2import numpy as npimg1 = cv2.imread('star1.PNG', 0)img2 = cv2.imread('star2.PNG', 0)img3 = cv2.imread('star3.PNG', 0)ret, thresh1 = cv2.threshold(img1, 127, 255, 0)ret, thresh2 = cv...原创 2020-02-07 15:22:31 · 1941 阅读 · 0 评论 -
Python 20.opencv 直方图均衡化,CLAHE(对比度改变)
import cv2import numpy as npimg = cv2.imread('pic1.png', 0)# 进行直方图均衡化equ = cv2.equalizeHist(img)# CLAHE有限对比适应性直方图均衡化clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))cl1 = clahe.ap...原创 2020-02-07 15:50:21 · 1954 阅读 · 0 评论 -
Python 21.opencv 霍夫直线变换
import cv2import numpy as npimg = cv2.imread('lane.jpg')# img = cv2.imread('pic2.PNG')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)edges = cv2.Canny(gray, 100, 200, apertureSize=3)minlinelengt...原创 2020-02-07 21:19:33 · 331 阅读 · 0 评论 -
Python 22.opencv 分水岭算法 图像分割
import cv2import numpy as np# 分割连在一块的硬币img = cv2.imread('coins3.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Otsu's二值化ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv...原创 2020-02-07 23:48:15 · 494 阅读 · 0 评论 -
Python 24.opencv 多对象模板匹配
import cv2import numpy as npimg_rgb = cv2.imread('mali.PNG')img_rgb_COPY = img_rgbimg_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)template = cv2.imread('kcoin.PNG', 0)w, h = template.shap...原创 2020-02-08 11:40:32 · 1136 阅读 · 2 评论 -
Python 23.opencv 单对象模板匹配
import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('lane.jpg', 0)img2 = img.copy()template = cv2.imread('car.PNG', 0)w, h = template.shape[::-1]methods = ['cv2....原创 2020-02-08 11:40:36 · 204 阅读 · 0 评论 -
Python 25. opencv 霍夫变换 圆变换 找圆
import cv2import numpy as npimg = cv2.imread('logo.png')img = cv2.medianBlur(img, 5)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)edges = cv2.Canny(gray, 100, 200, apertureSize=3)cimg = cv2.c...原创 2020-02-11 15:13:52 · 501 阅读 · 0 评论 -
Python opencv学习-1加载图片,plt、cv显示图片
距离上次系统的学习过去了1年,20年基本没怎么仔细学过,借寒假一段时间再巩固一下,看到博主“红鲤鱼遇绿鲤鱼”写的总结,瞬间眼前一亮,参考其代码快速巩固一下opencv系列参考链接:https://blog.csdn.net/tengfei461807914/article/details/60326377程序说明:test1:通过opencv加载图片,通过opencv显示图片,通过pylot显示图片,绘制坐标系标值,改变颜色顺序#!/usr/bin/env python# coding原创 2021-01-31 22:55:37 · 861 阅读 · 0 评论 -
Python opencv学习-2读取视频,存视频,设置视频大小
test2:各种通道读取视频(摄像头、url、视频文件),存视频,设置视频大小等import numpy as npimport cv2# 视频来源为摄像头cap = cv2.VideoCapture(0)# 视频来源为视频文件# cap = cv2.VideoCapture('vtest.avi')# 视频来源为URL# video_full_path="http://qnmov.a.yximgs.com/upic/2018/06/06/12/BMjAxODA2MDYxMjQw.原创 2021-01-31 23:05:10 · 2206 阅读 · 0 评论 -
Python opencv学习-3绘制图片、直线、矩形、圆、椭圆、多边形、文字
import numpy as npimport cv2# 画图窗口大小设置为512*512 通常参数,可选1,3,4img = np.zeros((512, 512, 4), np.uint8)# 画直线,参数为绘图窗口,起点,终点,颜色,粗细,连通性(可选4联通或8联通)img = cv2.line(img, (100, 0), (511, 511), (255, 0, 0), 5, 8)# 画矩形,参数为窗口,左上角坐标,右下角坐标,颜色,粗度img = cv2.rectangl.原创 2021-01-31 23:09:21 · 440 阅读 · 0 评论 -
Python opencv学习-4在图片上用鼠标绘制矩形区域、绘制矩形框、曲线等
# 程序功能鼠标按下,拖拽生成矩形框# 缺陷:拖过的区域涂黑,而且不彻底--后期换写法测试# 基本逻辑:鼠标按下松开,获取坐标,绘制矩形等------未看明白如何获取到的初始坐标和结束坐标,x,y从哪获取的值import numpy as npimport cv2drawing = False # 鼠标按下为真mode = True # 如果为真,画矩形,按m切换为曲线ix, iy = -1, -1px, py = -1, -1def draw_circle(event, x,.原创 2021-02-01 00:27:09 · 2184 阅读 · 0 评论 -
Python opencv学习-5创建带调色板的画板
test5:带调色板的画板,可改变线的粗细,颜色,缺点,其实是不断画圆,鼠标动作快了能看出执行间隔import cv2import numpy as npdrawing = False# mouse callback functiondef nothing(x): passdef draw_circle(event, x, y, flags, param): global drawing s = cv2.getTrackbarPos('size', 'im.原创 2021-02-01 09:54:06 · 131 阅读 · 0 评论 -
Python opencv学习-6Canny边缘检测学习
代码、图片参考https://blog.csdn.net/tengfei461807914/article/details/76376941修正了其文中出现的错误canny作用及用法简单理解:阈值针对的是图像灰度梯度而言,需要确定哪些边界是真正的边界,需要两个阈值,minVal和maxVal。图像灰度梯度 高于maxVal被认为是真正的边界,低于minVal的舍弃。两者之间的值要判断是否与真正的边界相连,相连就保留,不相连舍弃。如图,A是真正边界,保留,B不是,舍弃,C与真正边界相连,保留原创 2021-02-01 16:22:10 · 126 阅读 · 0 评论 -
Python opencv学习-7图像梯度学习
图像梯度学习,再次感觉到,,,先不求甚解,现阶段学习思路为会用就行,基本原理不做太深研究,理解大概原理就行以下为两个实验,主要演示了sobel求图像梯度的过程,和问题的解决(第一个实验只能找到一种边界)# 原理:# 简单的来说,梯度的原理就是求导数,opencv中有三种不同滤波器,或者说成高通滤波器。分别是Sobel,Scharr 和 Laplacian。# 缺点:sobel求导只有两个方向,即x方向和y方向----不知道算不算缺点,感觉够用# 参考:https://blog.csdn.ne原创 2021-02-02 00:51:17 · 408 阅读 · 0 评论 -
Python opencv学习-8寻找轮廓、绘制轮廓
import numpy as npimport cv2im = cv2.imread('image/canny.png')# 寻找轮廓前要对其进行灰度化、二值化处理(也可使用canny进行边缘检测)imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)ret,thresh = cv2.threshold(imgray,127,255,0)cv2.imshow("th", thresh)image, contours, hierarchy = cv2..原创 2021-02-02 10:06:43 · 177 阅读 · 0 评论 -
Python opencv学习-9计算像素点到轮廓的距离,绘制标记点
# 程序效果:双击鼠标在图片上画点,轮廓内,上,外各是不同颜色的点# 注意点:不同图片参数很可能不同,记得修改二值化参数和轮廓序号import cv2import numpy as npdef draw_circle(event,x,y,flags,param): if event == cv2.EVENT_LBUTTONDBLCLK: dist = cv2.pointPolygonTest(cnt,(x,y),True) if dist > 0:.原创 2021-02-02 10:48:58 · 1936 阅读 · 4 评论 -
Python opencv学习-10寻找凸缺陷,输出轮廓形状匹配度
# 凸缺陷和轮廓形状匹配import cv2import numpy as npimg = cv2.imread('image/five.jpg')img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(img_gray, 140, 255, 0)im, contours, hierarchy = cv2.findContours(thresh, 2, 1)print(len(contour.原创 2021-02-02 11:25:24 · 547 阅读 · 2 评论 -
Python opencv学习-11绘制灰度直方图、RGB直方图
通过直方图可以对图像灰度分布有一个整体了解,x轴上是灰度值(0到255),y轴是图片中该灰度值的像素点的数目。理解为图片整体各项数据的直观认识原创 2021-02-02 12:53:12 · 718 阅读 · 1 评论 -
Python opencv学习-12 2D直方图绘制
# 绘制2D直方图:要转换到hsv色彩空间import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('image/pic2.png')hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)hist = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )plt.imshow(hist,.原创 2021-02-02 15:53:57 · 113 阅读 · 0 评论 -
Python opencv学习-13 直方图反向投影(用于图像分割)
代码和图片大量参考https://blog.csdn.net/tengfei461807914/article/details/77075567自己跑了下验证了下~个人理解:直方图反向投影用来做图像分割,或者说知道了一个目标的图片的一部分,去另一个包含这个目标的图中去分割这个目标,如去图2中找图1 的部分图1图2import cv2import numpy as npfrom matplotlib import pyplot as plt#roi图片,就想要找的的图片.原创 2021-02-03 00:31:44 · 346 阅读 · 0 评论 -
Python opencv学习-14 Harris角点检测学习
参考:https://blog.csdn.net/tengfei461807914/article/details/78009887理解:窗口移动,第一个移动像素值不会变化,无边缘和角点,第二个上下检测不到边缘,左右能检测到,第三个各个方向的偏移均会导致像素值变化,有角点# 修正的作用:某个角点处或者说图片的拐角处会检测到多个角点,需要合成一个import cv2import numpy as npfilename = 'image/qi.jpg'img = cv2.imread原创 2021-02-03 10:48:03 · 161 阅读 · 0 评论