OpenCV

OpenCV 轮廓检测

╄→尐↘猪︶ㄣ 提交于 2020-11-15 18:00:53
使用OpenCV可以对图像的轮廓进行检测。这是之前用过的代码,挺简单的,回顾一下。主要要进行以下2步操作: 1.cvThreshold():对图像进行二值化处理 2.cvFindContours():查找图像轮廓 注意:这个过程中图像要转化为灰度图。 /*********************************************************************** 雷霄骅 ***********************************************************************/ #include "stdafx.h" #include "cv.h" #include "cxcore.h" #include "highgui.h" int main( int argc, char** argv ) { //声明IplImage指针 IplImage* pImg = NULL; IplImage* pContourImg = NULL; CvMemStorage * storage = cvCreateMemStorage(0); CvSeq * contour = 0; int mode = CV_RETR_EXTERNAL; if( argc == 3) if(strcmp(argv[2], "all") == 0

opencv图像轮廓

冷暖自知 提交于 2020-11-15 17:41:19
最小外接圆 函数 cv2.minEnclosingCircle() 可以帮我们找到一个对象的外切圆。它是所有能够包括对象的圆中面积最小的一个。 案例:现有下面这样一张图片,要求将图片中心的花朵标记出来。 代码: import numpy as np import cv2 as cv img =cv.imread( " image.jpg " ,0) # 为了显示方便,这里将图片进行缩放 x,y= img.shape img =cv.resize(img,(y//2,x//2 )) # 将图片二值化,由于前景物体是黑色的,因此在二值化时采用cv.THRESH_TOZERO_INV这种方式 ret,thresh=cv.threshold(img,127,255 ,cv.THRESH_TOZERO_INV) # 寻找图片中的轮廓,mode=cv.RETR_EXTERNAL,这是为了寻找最外层的轮廓 im,contour,hierarchy= cv.findContours(thresh,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE) # cv.minEnclosingCircle函数的参数要求是ndarray类型,因此这里将找到的 # 轮廓中的所有的点存放在一个列表中,然后使用这个列表创建数组 point_list= [] for i in

python opencv 凸包

拥有回忆 提交于 2020-11-15 14:04:52
# -*- coding: UTF-8 -*- import datetime import cv2 import numpy as np import os def get_convexHull(src2): h,w=src2.shape[:2] gray = cv2.cvtColor(src2, cv2.COLOR_BGR2GRAY) # 二值化 ret, binary = cv2.threshold(gray, 125, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) # 获取结构元素 k = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) # 开操作 binary = cv2.morphologyEx(binary, cv2.MORPH_OPEN, k) cv2.imshow("binary", binary) # 轮廓发现 contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for c in range(len(contours)): # 是否为凸包 ret = cv2.isContourConvex(contours[c]) if not ret: #

python opencv轮廓总结

半腔热情 提交于 2020-11-15 14:04:35
OpenCV中的轮廓 1.1什么是轮廓 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了准确,要使用二值化图像。需要进行阀值化处理或者Canny边界检测。 查找轮廓的函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。 在OpenCV中,查找轮廓就像在黑色背景中超白色物体。你应该记住,要找的物体应该是白色而背景应该是黑色。 如何在一个二值图像中查找轮廓。 函数cv2.findContours()有三个参数,第一个是输入图像,第二个是轮廓检索模式,第三个是轮廓近似方法。返回值有三个,第一个是图像,第二个是轮廓,第三个是(轮廓的)层析结构。轮廓(第二个返回值)是一个Python列表,其中储存这图像中所有轮廓。每一个轮廓都是一个Numpy数组,包含对象边界点(x,y)的坐标。 1.2怎样绘制轮廓 函数cv2.drawContours()可以被用来绘制轮廓。它可以根据你提供的边界点绘制任何形状。它的第一个参数是原始图像,第二个参数是轮廓,一个python列表,第三个参数是轮廓的索引(在绘制独立轮廓是很有用,当设置为-1时绘制所有轮廓)。接下来的参数是轮廓的颜色和厚度。 在一幅图像上绘制所有的轮廓: import numpy as np import cv2 img = cv2

已经有dll文件,报错:“缺少XXXXX.dll 无法继续执行代码。重新安装程序可能会解决此问题”解决方案

时光毁灭记忆、已成空白 提交于 2020-11-15 11:32:38
解决方案 尝试了博客的很多方法,都建议直接复制dll到工程目录,觉得特别繁琐,而且会导致项目文件夹很大。 从这篇文章得到启发: 链接 项目->属性->环境 输入path=(不要空格)(你存储dll的目录) 注意:不要有空格 例如我的:path=D:\test\libtorch\lib 如要添加多个路径,以分号间隔。如:path=D:\test\libtorch\lib;D:\test\OpenCV\build\x64\vc15\bin; 来源: oschina 链接: https://my.oschina.net/u/4370838/blog/4717692

python opencv 透视变换

ぃ、小莉子 提交于 2020-11-15 11:31:44
可以缩小,不能放大: 只需要4个点坐标就可以了。 # -*- coding: utf-8 -*- import os import numpy as np import cv2 list_path = r"E:\data\barcode\train\13_3_new\imgs" # list_path=r"E:\data\barcode\train\13_3_new\blur" g = os.walk(list_path) img_files = ['%s/%s' % (i[0], j) for i in g for j in i[-1] if j.endswith('jpg')] for img_path in img_files: img=cv2.imread(img_path) middle_len = 268 height,width=img.shape[:2] h_value1 = -30 w_value2 =30 pts1 = np.float32([[0, 0], [0, height], [width, height], [width, 0]]) # 变换后的四个角点 pts2 = np.float32([[0, 0], [0, height - h_value1], [width- w_value2, height - h_value1 ], [width- w

Java身份证号码识别系统(开源项目)

喜你入骨 提交于 2020-11-14 17:03:24
点击上方蓝色字体,选择“设为星标” 回复”资源“获取整理的海量电子书 项目介绍 本项目是通过学习https://gitee.com/nbsl/idCardCv 后整合tess4j,不需要经过训练直接使用的,当然,你也可以进行训练后进行使用。该项目修改原有的需要安装opencv的过程,全部使用javaccp技术重构,通过javaccp引入需要的c++库进行开发。 不需要安装opencv 新增的了前端控制识别区域的功能,新增了后端识别后验证 ,页面样式主要适应paid,重新修改了后面的识别过程,用户opencv进行图片优化和区域 选择,使用tess4j进行数字和x的识别 配合样式中的区域在后台裁剪相关区域图片 /idCardCv/src/main/resources/static/js/plugins/cropper/cropper.css 遇到问题 1、java.lang.UnsatisfiedLinkError: C:\Users\Administrator.javacpp\cache\opencv-3.4.3-1.4.3-windows-x86_64.jar\org\bytedeco\javacpp\windows-x86_64\jniopencv_core.dll: Can't find dependent libraries 我的问题是因为没有c++运行环境,我在img/vc