OpenCV项目实战
OpenCV项目实战
beyond谚语
你只管努力,剩下的交给天意。
展开
-
基于(Python下的OpenCV)图像处理的喷墨墨滴形状规范检测
通过图像处理,分析数码印花的喷头所喷出来的墨滴形状,来判断墨水及其喷头设备的状态主要思路:1,首先通过高速摄像头捕获数码印花喷头喷出的墨滴照片2,将照片进行灰度和二值处理3,获取照片中墨滴的的边缘4,获取边缘所围成的墨滴面积5,对墨滴边缘进行外接圆绘制,并获取外接圆的直径6,将图片与标准的墨滴进行面积和外接圆直径对比7,将图像和标准墨滴图像进行加权融合,并获取交集部分边缘化图像8,获取交集部分边缘面积的大小9,由以上数据分析,反推出墨水的工艺和喷头设备的状态情况一、将彩色的照片转化为黑原创 2021-10-15 21:47:34 · 609 阅读 · 0 评论 -
比较两张大小相同的照片的差异,返回数值
比较两张照片的差异,返回数值from PIL import Imageimport mathimport operatorfrom functools import reducedef image_contrast(img1, img2): image1 = Image.open(img1) image2 = Image.open(img2) h1 = image1.histogram() h2 = image2.histogram() result =原创 2021-10-05 16:30:29 · 226 阅读 · 0 评论 -
识别圆、矩形、三角形,并绘制其轮廓,求其面积
import cv2 as cvimport numpy as npdef measure_object(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU) print("threshold value : %s"%ret) cv.imshow("binar原创 2022-04-05 18:01:18 · 376 阅读 · 0 评论 -
加载一张照片,可选择是否另存为
加载一张照片,按下S键保存,ESC退出加载一个灰度图(E:\Python-workspace\yanyu.png),显示图片按下’s’键保存(beyond.png)(保存后的路径和该程序所在路径一致)后退出,或者按下 ESC 键退出不保存import cv2img = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water1.png',1)#读取该灰度照片0,彩色照片1cv2.imshow("YY",img)#显示该照片,YY为显示该照片的图像框标题原创 2021-10-05 15:38:26 · 175 阅读 · 0 评论 -
直方图反向投影
通过直方图反向投影,根据目标衣服颜色的特征来进行定位cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])其中[32,48]表示bin的个数,可以修改,当然范围越小越精确import cv2import numpy as npfrom matplotlib import pyplot as pltdef back_projection(): sample = cv2.imread(r"G:\Juptyer_workspace\s原创 2022-03-27 15:57:23 · 366 阅读 · 0 评论 -
K-Means聚类
分类和聚类分类:从特定的数据中挖掘模式,作出判断的过程。有标签,有监督学习。通俗点:把不同的东西分类,每一类都有具体的特征,有明确的类别。例如:猫、狗、大猩猩…聚类:将数据集中在某些方面相似的数据成员放在一起。无标签,无监督学习。通俗点:把不同的东西分类,每一类都有具体的特征,没有明确的类别。例如:A类、B类…A、B类是什么,需要用户进行判断。K-Means聚类确定K值,即将数据集聚集成K个类簇或小组。从数据集中随机选择K个数据点作为质心(Centroid)或数据中心。分别计算每个点到每个质心原创 2022-03-08 11:11:51 · 1581 阅读 · 0 评论 -
一张图片中有多个一样的目标物体,分别进行识别定位分割(Python实现)
一张图片中有多个一样的目标物体,分别进行识别定位分割(Python+OpenCV)原创 2024-05-22 19:44:11 · 568 阅读 · 0 评论 -
查看照片的指定位置的像素点值,并在照片中绘制一条指定像素颜色的线段
查看照片的指定位置的像素点值,并在照片中绘制一条指定像素的线段import cv2img = cv2.imread('E:\Python-workspace\OpenCV\yanyu/beyond.png',1)#1为彩色图片,0为灰度图片(b,g,r) = img[20,20]#取照片的(20,20)处的像素点,左上角为(0,0),横为y轴,竖为x轴print(b,g,r)#OpenCV中的像素为BRGfor i in range(1,50):#左闭右开 img[i,100] = (0,原创 2021-10-06 11:24:37 · 659 阅读 · 0 评论 -
Python求解多项式方程
例如:二次函数:f(x) = 10x^2 - 14x + 22,依次求解x=1,2,3,4,5,6时函数表达式所对应的函数值。import numpy as np#f(x) = 10*x^2 - 14x + 22p = np.array([10,-14,22])#这里存放的是系数x = [1,2,3,4,5,6]y=np.polyval(p,x)#这里的列表y依次存放x=1、x=2、x=3、x=4、x=5、x=6 所对应的y的值print(y)结果如下:例如:三次函数:f(x) = 10x原创 2022-03-17 16:50:28 · 3731 阅读 · 0 评论 -
显示照片的RGB直方图
显示照片的RGB直方图import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('E:\Python-workspace\OpenCV\OpenCV/BEYOND.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片color = ('b','g','r')for i,col in enume原创 2021-10-05 16:18:58 · 309 阅读 · 0 评论 -
黑色背景下,描绘照片的轮廓形状并保存
描绘照片的轮廓形状并保存import cv2from matplotlib import pyplot as plt# 1.先找到轮廓img = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/beyond.png', 0)_, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)image, conturs, hierarchy = cv2.findConto原创 2021-10-05 17:08:47 · 175 阅读 · 0 评论 -
识别物体的轮廓,使用矩形框出并计算矩形面积
import cv2 as cvimport numpy as npdef measure_object(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU) print("threshold value : %s"%ret) cv.imshow("binar原创 2022-04-05 17:59:27 · 1357 阅读 · 0 评论 -
对照片进行边缘化处理,并将边缘化处理后的结果保存
对照片进行边缘化处理,并将边缘化处理后的结果保存import cv2from matplotlib import pyplot as pltimg = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water1.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片edges = cv2.Canny(img,80,200)plt.subplot(121),plt.原创 2021-10-05 15:54:18 · 335 阅读 · 0 评论 -
将两大小完全相同的照片进行加权混合对比
将两张大小完全相同的照片进行加权混合对比import cv2img1=cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water1.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片img2=cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water2.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜原创 2021-10-05 16:25:48 · 247 阅读 · 0 评论 -
基于图像处理的数码印花喷墨墨滴形状规范的研究(Python+OpenCV+Mysql)
大体思路:由于墨滴的不同参数会对墨滴的形态产生一定的影响,故如果通过研究墨滴的形态则通过海量的数据就可以大概确定墨滴的各项参数指标的范围。通过OpenCV对墨滴的喷出的形状进行图像处理,对墨滴图像进行一系列的分析,通过一系列参数存入Mysql数据库中最终找到参数与墨滴形态的关系。本篇博客是通过拿标准墨滴、参数墨滴的图像和Mysql数据库中的数据进行对比从而得出相应的结论。(当然这里的标准墨滴只不过是本人的一个例子而已,为了简化后续操作而自我设定的,故再次声明一下)一、墨滴的图像...原创 2021-11-22 10:57:13 · 3941 阅读 · 0 评论 -
Python对自定义离散点进行指定多项式函数拟合
离散点为自定义点:(1,2),(2,5),(3,10),(4,17),(5,26),(6,37)(7,50),(8,65),(9,82)很显然是函数为二次函数,y=x^2+1代码中,f1 = np.polyfit(x, y, 2),2表示使用二次函数进行拟合import numpy as npimport matplotlib.pyplot as plt#定义x、y散点坐标x = [1,2,3,4,5,6,7,8,9]x = np.array(x)print('x is :\n',x)原创 2022-03-12 20:50:52 · 4190 阅读 · 2 评论 -
找取照片上的25个特征点,并保存结果
找取照片上的25个特征点,并保存结果import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water1.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片gray = cv2.cvtColor(img,cv2.COLOR_BGR2原创 2021-10-05 16:03:30 · 358 阅读 · 0 评论 -
黑色背景下,将照片内封闭空心图案的空心区域染成Cyan并保存
在黑色背景下,将照片内封闭空心图案的空心区域染成灰色import cv2import numpy as npimg = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/beyond.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)_,th = cv2.thresho原创 2021-10-05 16:51:29 · 163 阅读 · 0 评论 -
对照片质量进行压缩
对照片质量进行压缩1,对jpg照片进行有损压缩import cv2img = cv2.imread("E:\Python-workspace\OpenCV/yy.jpg",1)#1表示彩色图片,0表示灰度图片cv2.imwrite('E:\Python-workspace\OpenCV/y0.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,0])#这里的取值范围为0-100,其中0表示压缩的越厉害,体积越小当然会有损照片cv2.imwrite('E:\Python-works原创 2021-10-06 10:34:04 · 353 阅读 · 0 评论 -
视频的读取与处理
读取本地视频,以灰度视频输出import cv2vc = cv2.VideoCapture('E:\Jupyter_workspace\study\data/a.mp4')#视频路径根据实际情况而定#检查是否打开正确if vc.isOpened(): open,fream = vc.read()#read()返回两个参数,第一个参数为打开成功与否True or False;第二个参数为每一帧的数据信息 print("okkk")#测试一下else: open = Fal原创 2021-10-11 15:13:20 · 153 阅读 · 0 评论 -
对视频中的特征颜色物体(青色水杯)进行跟踪
import cv2import numpy as npdef extrace_object(): capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4") while(True): ret,frame = capture.read() if ret==False: break hsv = cv2.cvtColor(frame,cv2原创 2022-03-24 17:35:53 · 760 阅读 · 0 评论 -
调用本地电脑摄像头并进行按P进行捕获照片并保存,按下Q退出
调用本地电脑摄像头并进行按P进行捕获照片并保存,按下Q退出灰度摄像头显示:import cv2cap = cv2.VideoCapture(0)if not cap.isOpened(): print("Cannot open camera") exit()while True: # 逐帧捕获 ret, frame = cap.read() # 如果正确读取帧,ret为True if not ret: print("Can't rec转载 2021-10-06 09:21:12 · 269 阅读 · 0 评论 -
显示照片的二维直方图
显示照片的二维直方图import cv2from matplotlib import pyplot as pltimg = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/water1.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片plt.hist(img.ravel(),256,[0,256])plt.show()效果如下:运行前:运行后:.原创 2021-10-05 16:13:52 · 102 阅读 · 0 评论 -
黑白图片颜色反转并保存
将图像的黑白颜色反转并保存import cv2# opencv读取图像img = cv2.imread(r'E:\Python-workspace\OpenCV\OpenCV/YY.png', 1)cv2.imshow('img', img)img_shape = img.shape # 图像大小(565, 650, 3)print(img_shape)h = img_shape[0]w = img_shape[1]# 彩色图像转换为灰度图像(3通道变为1通道)gray = cv2.c原创 2021-11-23 22:30:01 · 3426 阅读 · 0 评论 -
黑色背景下,计算照片白色的区域面积和周长
黑色背景下,计算照片白色的区域面积和周长import cv2img = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/beyond.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(img_gray, 0, 25原创 2021-10-05 16:41:23 · 1002 阅读 · 0 评论 -
四、模拟英语四六级答题卡识别阅卷评分
一、思路分析首先拿到答题卡照片的时候,需要对照片进行一系列预处理操作,通过透视变换将图像摆正方便后续的操作。每一道题五个选项,有五道题,通过字典存放准确答案。没有依次对答题卡进行轮廓检测,这里采用的是正方形,宽高比是1:1,当然也可以是矩形,也可以通过指定其他的筛选进行进行过滤筛选。最后通过掩膜操作,因为用户所选择的答案都是被涂过的,也就是通过判断黑色和白色来进行区分是否是用户选择的答案。一行一行的存储,因为一道题是五个选项,每一行是一道题,这里采用从上到下从左到右分别依次存放1-5题的A-E选项。通过与原创 2022-04-20 12:12:43 · 2752 阅读 · 0 评论 -
三、全景拼接
一、项目所涉及到的一些知识点Ⅰ,BF(Brute-Force)暴力匹配:把两张图像的特征点全部给算出来,然后使用归一化的欧氏距离比较这两张图像上特征点之间的大小关系,越小越相似。SIFT算法import cv2import numpy as npimport matplotlib.pyplot as plt%matplotlib inlinedef cv_show(name,img): cv2.imshow(name,img) cv2.waitKey(0) cv2.d原创 2022-04-20 10:09:05 · 145 阅读 · 0 评论 -
二、文档扫描OCR
一、思路分析首先,拿到一张文档,我们需要对文档进行预处理操作,再进行轮廓检测,因为就算拿到文档轮廓,但是这些轮廓也有可能是歪歪扭扭的,这时候需要通过一系列的透视变换操作,将文档摆正。通过调用OCR函数库实现文档内容的识别。二、导包及其相关函数# 导入工具包import numpy as npimport argparseimport cv2# 设置参数ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", requir原创 2022-04-19 10:45:16 · 779 阅读 · 0 评论 -
一、信用卡卡号识别
一、思路分析大体思路:首先拿到一张银行卡,我们得有银行卡号数字的0-9样式的模板,然后再通过不同数字的轮廓的外接矩形来进行匹配,最终识别出银行卡号所对应的数字。银行卡数字模板:银行卡信息:拿到银行卡的时候,因为银行卡上面不仅仅只是银行卡号,还会存在一些干扰项,这时候需要对这些干扰项进行过滤,这些干扰项和数字所在的外接轮廓大小是不相同的,故可以以此进行过滤筛选。当然,一下次不会将单个数字给定位到,拿到的也不是单个数字,绝大多数的银行卡号都是四个为一组,接下来再对每一组中的四个数字进行拆分。二、导原创 2022-04-18 19:14:20 · 3873 阅读 · 0 评论