opencv
zjLOVEcyj
composing code was a kind of art
展开
-
opencv图像梯度
sobel算子读取原图img = cv2.imread('pie.png',cv2.IMREAD_GRAYSCALE)cv2.imshow("img",img)cv2.waitKey()cv2.destroyAllWindows()计算横轴梯度def cv_show(img,name): cv2.imshow(name,img) cv2.waitKey() cv2.destroyAllWindows()sobelx = cv2.Sobel(img,cv2.原创 2021-10-16 18:01:27 · 52 阅读 · 0 评论 -
opencv霍夫变换直线检测
import cv2import numpy as npimg = cv2.imread("../chapter3/qipan.png")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)edges = cv2.Canny(gray, 50, 120)min_line_lenghth = 200max_line_gap = 30lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, min_line_leng原创 2021-09-10 18:18:44 · 167 阅读 · 0 评论 -
opencv绘制矩形,最小矩形,最小闭圆的轮廓
import cv2import numpy as npimg = cv2.imread("../chapter3/hammer.jpg", cv2.IMREAD_UNCHANGED)ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY), 127, 255, cv2.THRESH_BINARY)contours, hier = cv2.findContours(thresh, cv2.RETR_EXTE原创 2021-09-10 16:58:56 · 386 阅读 · 0 评论 -
opencv轮廓检测
import cv2import numpy as npimg = np.zeros((200, 200), dtype=np.uint8)img[50:150, 50:150] = 255ret, thresh = cv2.threshold(img, 127, 255, 0) #二值化contours, hirerarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)color = cv2.cvtC原创 2021-09-10 16:02:37 · 102 阅读 · 0 评论 -
opencv在窗口显示摄像头帧流
import cv2clicked = Falsedef onMouse(event, x, y, flags, param): #定义鼠标回调事件的函数 global clicked if event == cv2.EVENT_LBUTTONUP: #鼠标左键松开 clicked = True #标记此时鼠标左键已松开camerac = cv2.VideoCapture(0)cv2.namedWindow("MyWindow") #创建指定名称的窗口cv2.s原创 2021-09-10 14:51:25 · 217 阅读 · 0 评论 -
opencv获取摄像头帧流
import cv2camerac = cv2.VideoCapture(0) #获取摄像头的帧流fps = 30 #设定帧率size = (int(camerac.get(cv2.CAP_PROP_FRAME_WIDTH)), int(camerac.get(cv2.CAP_PROP_FRAME_HEIGHT))) #设定视频宽高vw = cv2.VideoWriter( "../video/2_camera.avi", cv2.VideoWriter_fourcc("I",原创 2021-09-10 14:21:41 · 693 阅读 · 0 评论 -
opencv读写视频
import cv2vc = cv2.VideoCapture("./video/1.mp4")fps = vc.get(cv2.CAP_PROP_FPS)size = (int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)), int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)))vw = cv2.VideoWriter( "./video/1_write.avi", cv2.VideoWriter_fourcc("I", "4",原创 2021-09-10 14:05:32 · 115 阅读 · 0 评论 -
opencv信用卡卡号检测
导入必要的包import osos.chdir("E:/code/opencv计算机视觉实战/template-matching-ocr/")from imutils import contoursimport numpy as npimport cv2import myutils指定模板图和信用卡图的地址card_default="./images/credit_card_01.png"template_default="./images/ocr_a_reference.pn.原创 2021-06-28 19:17:32 · 167 阅读 · 2 评论 -
opencv直方图均衡化
直方图统计cv2.calcHist(images,channels,mask,histSize,ranges)images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如 果你想统图像某一分的直原创 2021-06-15 23:04:18 · 328 阅读 · 3 评论 -
opencv模板匹配
模板匹配模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程度的计算方法在opencv里有6种,然后将每次计算的结果放入一个矩阵里,作为结果输出。假如原图形是AxB大小,而模板是axb大小,则输出结果的矩阵是(A-a+1)x(B-b+1)# 模板匹配def cv_show(img, name="img"): cv2.imshow(name, img) cv2.waitKey(0) cv2.destroyAllWind.原创 2021-06-15 21:35:07 · 209 阅读 · 1 评论 -
opencv图像金字塔和图像轮廓
高斯金字塔import cv2img=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)up=cv2.pyrUp(img)up_down=cv2.pyrDown(up)cv_show(up_do.原创 2021-06-15 20:37:03 · 184 阅读 · 1 评论 -
canny边缘检测
1 高斯滤波器2 梯度和方向3 非极大值抑制对于像素点A,比较其梯度方向上的两个像素点和B,C和A,若A为最大值,则判断为边界值,否则置为0,边界方向和A的梯度方向垂直4 双阈值检测img=cv2.imread("lena.jpg")# minVal=80, maxVal=150v1=cv2.Canny(img,80,150)v2=cv2.Canny(img,50,100)res = np.hstack((v1,v2))cv_show(res,'res')img..原创 2021-06-14 16:48:40 · 70 阅读 · 0 评论 -
不同算子计算图像梯度
sobel算子scharr算子拉普拉斯算子import cv2import numpy as npdef cv_show(img,name): cv2.imshow(name,img) cv2.waitKey() cv2.destroyAllWindows()#不同算子的差异img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksiz.原创 2021-06-14 16:08:19 · 106 阅读 · 0 评论 -
opencv视频人脸+眼睛检测
import numpy as npimport cv2import osos.chdir("E:\\code\\opencv\\视频人脸识别")人脸检测cap = cv2.VideoCapture(0)while(True): # 一帧一帧的数据 ret,frame = cap.read() # 检测人脸 detector = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") rec原创 2021-03-28 13:28:06 · 512 阅读 · 0 评论 -
opencv人脸检测(Haar特征+级联分类)
Haar特征+Adaboost级联分类器以 Haar特征分类器为基础的对象检测技术是一种非常有效的对象检测技术,多用于人脸检测、行人检测等。Haar-like特征是计算机视觉领域一种常用的特征描述算子,也称为Haar特征。Haar特征就是用下图中黑色矩形所有像素值的和减去白色矩形所有像素值的和。Haar特征可以在检测窗口中由放大+平移产生一系列子特征。在论文《Rapid Object Detection using a Boosted Cascade of Simple Features》中,作者使用原创 2021-03-25 21:34:17 · 1569 阅读 · 0 评论 -
opencv视频操作
从摄像头读取视频内容import numpy as npimport cv2# 从摄像头获取图像数据cap = cv2.VideoCapture(0)while(True): # ret 读取成功True或失败False # frame读取到的图像的内容 # 读取一帧数据 ret,frame = cap.read() # 变为灰度图 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) cv2.i.原创 2021-03-21 21:54:27 · 86 阅读 · 0 评论 -
opencv Canny边缘检测
Canny边缘检测Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的。它是一个有很多步构成的算法,我们接下来会逐步介绍。1.噪声去除由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声2.计算图像梯度对平滑后的图像使用 Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和 Gy)。根据得到的这两幅梯度图(Gx 和 Gy)找到边界的梯度和方向梯度的方向一般总是与边界垂直。梯度方向被归为四类:垂直,水平,和原创 2021-03-21 18:46:29 · 260 阅读 · 0 评论 -
图像梯度
图像梯度:I是图像像素的值(如:RGB值)一阶导数:x的梯度:Gx = I(x+1,y)-I(x,y)y的梯度:Gy = I(x,y+1)-I(x,y)二阶导数:x的梯度:I(x+1,y)+I(x-1,y)-2I(x,y)y的梯度:I(x,y+1)+I(x,y-1)-2I(x,y)OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器: Sobel,Scharr 和 Laplacian。Sobel, Scharr 其实就是求一阶或二阶导数。 Scharr 是对 Sobel的优化。Lapl原创 2021-03-21 17:21:48 · 1543 阅读 · 0 评论 -
opencv图像二值化
import osos.chdir("E:\\code\opencv\\6.二值化\\")from imutils import *image = imread('image/coins.jpg')show(image)转为灰度图gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray,'gray')plt.axis('off')plt.show()五种计算方法进行二值化127为二值化阈值, ret1为阈值,原创 2021-03-21 16:57:16 · 644 阅读 · 0 评论 -
opencv颜色空间转换
RGBRGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,原创 2021-03-18 22:28:54 · 294 阅读 · 0 评论 -
opencv图像模糊平滑(美图降噪)
Averaging平均模糊平滑计算卷积框覆盖区域所有像素的平均值得到卷积的结果[[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]]image = imread('image.jpg')show(image)#设置3个不同大小的卷积窗口kernelsizes = [(3,3),(9,9),(15,15)]#定义一张画布plt.figure(figsize=(15,15))for i,kernel in enumerat原创 2021-03-18 22:11:28 · 192 阅读 · 0 评论 -
opencv图像形态学操作(腐蚀+膨胀)
图像腐蚀 黑色区域变大腐蚀的效果是把图片"变瘦",其原理是在原图的小区域内取局部最小值。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如:kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 矩形结构 kernelimage = imread('image.jpg')show(image.原创 2021-03-18 21:46:26 · 476 阅读 · 0 评论 -
图像金字塔
高斯金字塔 (由底向上)image = imread('image.jpg')show(image)image.shapefor i in range(4): image = cv2.pyrDown(image) print(image.shape) show(image)高斯金字塔 (自顶向下)for i in range(4): image = cv2.pyrUp(image) print(image.shape) sho.原创 2021-03-18 20:46:29 · 90 阅读 · 0 评论 -
opencv图像加减法
图像加法 将原图像所有像素值+100, 若超过255则赋为255原图image = imread('test.jpg')# 生成跟图片形状相同的并且全为100的数据M = np.ones(image.shape, dtype='uint8')*100# 所有的像素加100image = cv2.add(image, M)show(image)像素值-100后图像整体发白图像减法 将原图像所有像素值-100, 若低于0则赋为0image = imread('test.j.原创 2021-03-18 20:13:34 · 1272 阅读 · 0 评论 -
opencv图像翻转
import osos.chdir("E:\\code\opencv\\2.几何变换\\")from imutils import *image = imread("test.jpg")show(image)# 水平翻转image = imread("test.jpg")image = cv2.flip(image,1)show(image)# 垂直翻转image = imread("test.jpg")image = cv2.flip(image,0)show(image原创 2021-03-17 21:41:07 · 116 阅读 · 0 评论 -
opencv使用级联分类器实现人脸检测
imutils.py 封装读取和显示图片方法import cv2import matplotlib.pyplot as pltimport numpy as npdef show(image): plt.imshow(image) plt.axis('off') plt.show() def imread(image): image = cv2.imread(image) image = cv2.cvtColor(image,cv2.COLO.原创 2021-03-17 21:06:10 · 440 阅读 · 0 评论 -
opencv Haar特征+adaboost人脸识别
import cv2import numpy as npface_xml = cv2.CascadeClassifier("E:/code/conputer_visual/data/face_recognition/haarcascade_frontalface_default.xml")eyes_xml = cv2.CascadeClassifier("E:/code/conputer_visual/data/face_recognition/haarcascade_eye.xml")img =原创 2021-03-13 10:30:27 · 162 阅读 · 0 评论 -
opencv视频分解和视频合成
视频分解import cv2cap = cv2.VideoCapture("E:/code/conputer_visual/data/1.mp4") #获取一个视频句柄isOpened = cap.isOpened() #判断当前句柄是否可以打开fps = cap.get(cv2.CAP_PROP_FPS) #获取帧率width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取图像宽度height = int(cap.get(cv2.CAP_PROP_原创 2021-03-12 20:45:50 · 663 阅读 · 0 评论 -
opencv图像美化
绘制图像直方图import cv2import numpy as npdef ImageHist(image, type): color = (255,255,255) windowName = "Gray" if type == 31: color = (255,0,0) windowName = "B Hist" elif type == 32: color = (0,255,0) windowName原创 2021-03-12 16:38:50 · 301 阅读 · 0 评论 -
opencv文字图片绘制
文字绘制import cv2import numpy as npimg = cv2.imread("E:\\code\\conputer_visual\\data\\0.jpg", 1)font = cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img, (0,0), (215,215), (0,255,255), 3)#1目标图像2绘制文字3绘制坐标4字体5字体大小6字体颜色7字体粗细8线条类型cv2.putText(img, "zj_love_cc", (10原创 2021-03-11 16:44:02 · 340 阅读 · 0 评论 -
opencv图形绘制
绘制线段1import numpy as npimport cv2newImageInfo = (500,500,3)dst = np.zeros(newImageInfo, np.uint8)#linecv2.line(dst, (100,100), (400,400), (0,0,255))cv2.imshow("dst", dst)cv2.waitKey()绘制线段2import numpy as npimport cv2newImageInfo = (500,500,3)原创 2021-03-11 16:26:31 · 233 阅读 · 0 评论 -
opencv图像特效之油画特效
#油画特效# 1 gray 2 分割成x*x的小方块 3 0-255划分成几个等级, 将2步结果映射到这个等级上import cv2import numpy as npimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]cv2.imshow("src", img)gray = cv2.cvtColor(img, cv原创 2021-03-11 11:18:32 · 239 阅读 · 0 评论 -
opencv图像特效之颜色风格
#颜色风格import cv2import numpy as npimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]cv2.imshow("src", img)# b = b * 1.5 ,g = g * 1.3 增强蓝色和绿色dst = np.zeros((height, width, 3), np.uint8)原创 2021-03-11 10:45:46 · 124 阅读 · 0 评论 -
opencv图像特效之浮雕效果
#浮雕效果# newp = gray0 - gray1 + 150import cv2import numpy as npimport randomimport mathimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]cv2.imshow("src", img)gray = cv2.cvtColor(img原创 2021-03-11 10:36:57 · 446 阅读 · 0 评论 -
opencv图像特效之边缘检测2
import cv2import numpy as npimport randomimport mathimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]cv2.imshow("src", img)#sobel 1算子模板 2图片卷积 3阈值判决#[1 2 1 [1 0 -1# 0 0 0原创 2021-03-11 10:22:00 · 78 阅读 · 0 评论 -
opencv图像特效之边缘检测1
#边缘检测 实质就是图片卷积运算#1. 灰度处理 2. 高斯滤波(去除一些噪声干扰) 3.canny方法import cv2import numpy as npimport randomimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]cv2.imshow("src", img)gray = cv2.cv原创 2021-03-11 09:50:13 · 80 阅读 · 0 评论 -
opencv图像特效之图像融合
import cv2import numpy as npimg0 = cv2.imread("E:/code/conputer_visual/data/01.jpg",1)img1 = cv2.imread("E:/code/conputer_visual/data/02.jpg",1)imginfo = img0.shapeheight = imginfo[0]width = imginfo[1]dst = cv2.addWeighted(img0,0.7,img1,0.3,10) #参数原创 2021-03-10 21:44:43 · 88 阅读 · 0 评论 -
opencv图像特效之毛玻璃
import cv2import numpy as npimport randomimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)cv2.imshow("pre", img)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]dst = np.zeros((height, width, 3), np.uint8)mm = 4for m in range(0, he原创 2021-03-10 21:08:09 · 317 阅读 · 0 评论 -
opencv图像特效之马赛克
import cv2import numpy as npimg = cv2.imread("E:/code/conputer_visual/data/0.jpg", 1)cv2.imshow("pre", img)imginfo = img.shapeheight = imginfo[0]width = imginfo[1]for m in range(100,150): for n in range(100,150): #选中一个元素替代10*10方框中的全部像素点原创 2021-03-10 20:44:09 · 226 阅读 · 0 评论 -
opencv图像特效之颜色反转
灰度图像进行颜色反转本质即将对应点的像素值置换为 [255 - 原像素值]import cv2import numpy as npimg = cv2.imread("E:\\code\\conputer_visual\\data\\0.jpg", 0)img_info = img.shapeheight = img_info[0]width = img_info[1]dst = np.zeros((height, width), np.uint8)for i in range(heigh原创 2021-02-04 18:36:23 · 469 阅读 · 0 评论