
opncv
wi162yyxq
这个作者很懒,什么都没留下…
展开
-
YOLOV5 onnxruntime预测不用pytorch
使用onnxruntime不使用pytorch完成yolov5推理原创 2021-11-23 13:42:10 · 2977 阅读 · 3 评论 -
opencv python搞个写轮眼
最近又看了一遍忍界大战,试着做一个自动添加写轮眼的玩意儿。思路:人脸检测——人眼检测——瞳孔分割——写轮眼添加——融合opencv用的cascade进行人眼和人脸识别import numpy as npimport cv2import os# multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascadesface_cascade = cv2.CascadeClassifier('.\\原创 2021-04-29 23:32:46 · 950 阅读 · 2 评论 -
扫描件图像背景消除
翻译原文地址:https://mzucker.github.io/2016/09/20/noteshrink.html左:输入扫描@300 DPI,7.2Mb PNG/790 KB JPG。右:输出@相同分辨率,121 KB PNG。算法表现结果如上,突出前景文字类信息,消隐文件背景图像,同时减少了图像大小。一、背景识别在这里我们讨论的非均匀背景情况,均匀背景一个二值化就解决了。一般来说图像都比较大,像素点很多,这里的原始扫描图像为2,081 x 2,531,总面积为5,267,01原创 2021-01-27 14:13:13 · 1602 阅读 · 0 评论 -
python-opencv广义霍夫变换
广义霍夫变换就是利用霍夫变换的基本原理进行了推广,用来寻找任意闭合几何图形,这里主要是记录一下找到的资源模板图像为以下两个,一个是菱形一个是S形:import osimport numpy as npimport matplotlib.pyplot as pltfrom collections import defaultdictfrom scipy.misc import imreadfrom skimage.feature import cannyfrom scipy.ndim原创 2021-01-13 14:07:54 · 1240 阅读 · 0 评论 -
python下使用TPS进行变换
import cv2import numpy as npimport random# 首先读入imgimg = cv2.imread('0000003.jpg')label = open('0000003.txt','r',encoding='utf8')lines = label.readlines()for line in lines: points=[] point_ = line.split(',')[0:-1] for i in range(len(...原创 2020-07-21 10:01:58 · 3972 阅读 · 2 评论 -
python-opencv圆环变矩形矩形变圆环(逆时针)
import cv2import numpy as npfrom PIL import Imageimport mathdef get_huan_by_circle(img,circle_center,radius,radius_width): black_img = np.zeros((radius_width,int(2*radius*math.pi),3),dtype='uint8') for row in range(0,black_img.shape[0]): .原创 2020-06-28 10:46:30 · 1683 阅读 · 0 评论 -
python-opencv圆环变矩形矩形变圆环
具体数学原理就很简单了,无非就是坐标变换,从x,y或者r,theta变换一下,cx+r*sin(theta)和cy-r*cos(theta)当然由于采样原因,导致恢复得结果里有采样不到的点。import cv2import numpy as npfrom PIL import Imageimport mathdef get_huan_by_circle(img,circle_center,radius,radius_width): black_img = np.zeros((原创 2020-06-27 13:07:06 · 4683 阅读 · 7 评论 -
badapple
逛b站又看到了badapple。。。。。先做个简化版的玩一下,哈哈。from tkinter import *from tkinter.ttk import Scrollbarimport tkinter.font as tkFontimport timeimport cv2theme_color = { 'Default': '#000000.#FFFFFF', 'Greygarious': '#83406A.#D1D4D1', 'Aquamarine': '#5原创 2020-05-29 15:59:52 · 351 阅读 · 0 评论 -
opencv矩计算图形主方向
主要也就是用了个一阶中心矩和二阶中心矩计算了一下质心和方向,主要用在印章上面,算是一个思路吧,毕竟还是需要调参的,鲁棒性比较一般。用这种方式可以来稍微矫正一下图像,方便后期的处理。主要代码如下:#img为二值图像M = cv2.moments(img)cx = int(M['m10']/M['m00'])cy = int(M['m01']/M['m00'])cv2.circle(img, (cx, cy), 10, (0, 0, 255), -1)cv2.imshow('th',原创 2020-05-23 10:31:32 · 1957 阅读 · 1 评论 -
表格图像预处理(二)
这是处理效果,中间表格中的文字代表表格内容的属性,也就是表格内容对应的问题。针对这种需要填的表格,很明显尚未填的地方是空白的,所以流程如下:提取表格信息(见一)——恢复表格位置——根据表格是否空白判断是否为未填写——根据前后表格状态判断该表格属性...原创 2020-01-04 19:28:43 · 422 阅读 · 0 评论 -
表格图像预处理(一)
所处理表格图像如图所示:(百度搜的图,只是为了尝试一下处理方法)主要处理流程就是:1.图像预处理:二值化图像2.提取表格信息:横纵线及交点3.去除表格:利用表格信息去除图中表格4.将剩下的非表格信息进行形态学处理,将文字区域按块分出5.最后我利用自己手头训练的识别模块重写内容到一张空白图上效果还行吧。。。。。...原创 2019-12-28 13:05:36 · 586 阅读 · 1 评论 -
openni+nite体感鼠标模拟2
这一部分主要是关于多线程的问题,因为使用过程中为了保证实时性,使用多线程是必要的,多线程的使用很复杂,但是在这里我们只用最基本的功能,所以还是比较简单的。首先是多线程所使用的函数的定义。DWORD WINAPI ReadDepthMapThread(LPVOID lpParamter){ while (1) { g_Context.WaitAndUpdateAll(); g_Im原创 2016-11-16 16:38:16 · 466 阅读 · 0 评论 -
Dlib+Vs2015配置
(1)下载并解压Dlib下载链接 http://dlib.net/(2)设置环境变量此步可以省略,不过后面就需要写全路径了。新建环境变量: DLIB = D:\Program Files\dlib-19.0\,其中“D:\Program Files\dlib-19.0”是我的解压目录(3)建立VS2013空项目3.1 设置包含目录右键项目原创 2017-01-25 09:21:18 · 3489 阅读 · 2 评论 -
Dlib中Delaunay Triangulation
#include #include #include #include #include #include #include #include #include using namespace dlib;using namespace std;void draw_delaunay(cv::Mat& img, cv::Subdiv2D& subdiv, cv原创 2017-01-26 19:27:26 · 769 阅读 · 0 评论 -
GrabCut图像分割
GrabCut是微软研究院的一个课题,主要功能是分割和抠图。个人理解它的卖点在于:(1)你只需要在目标外面画一个框,把目标框住,它就可以完成良好的分割:(2)如果增加额外的用户交互(由用户指定一些像素属于目标),那么效果就可以更完美:(3)它的Border Matting技术会使目标分割边界更加自然和perfect: 当然了,它也有不完美的地方,一是没有任何转载 2017-03-12 15:51:07 · 13503 阅读 · 0 评论 -
提取照片里的PPT部分
这几天上课老师说ppt不能拷。。。真是不爽,所以我写了一个提取照片里ppt部分的东西,其实原理很简单,代码贴出来大家就知道了,无非就是阈值化+轮廓提取+透视变换,效果还可以,不过我还是想再好一些,如果大家有什么想法请告诉我。#includeusing namespace std;using namespace cv;int main(){ //读取图片并灰度化 Mat src原创 2017-05-25 09:38:53 · 2076 阅读 · 1 评论 -
基于网格的运动统计,用于快速、超鲁棒的特征匹配
说明:将平滑度约束引入特征匹配是已知的可以实现超强鲁棒匹配。 然而,这样的匹配方案既复杂又缓慢,使得它们不适合于视频应用。 本文提出了GMS(基于网格的运动统计),一种简单的方法,将运动平滑度作为一个统计量,进行局部区域的匹配。GMS可以将高匹配数字转换成高匹配质量。 这提供了一个实时、超强的匹配系统。 评估低质量、模糊的视频和广泛基线显示,GMS始终如一地优于其他实时匹配器。转载 2017-05-25 13:22:16 · 3168 阅读 · 0 评论 -
opencv骨骼提取
原理参照这个博客https://blog.youkuaiyun.com/hjxu2016/article/details/80737696代码如下:import cv2import numpy as npim=cv2.imread('1.png',cv2.IMREAD_GRAYSCALE)thresh,im=cv2.threshold(im,0,255,cv2.THRESH_BINARY+c...原创 2019-05-30 10:46:54 · 5473 阅读 · 1 评论 -
C#调用tensorflow模型EAST识别文字
主要利用了Emgucv这个opencv的C#库,但是由于Emgucv里的NMS只能计算Rect不能计算RotateRect所以识别水平文字还行,倾斜的就不行了,代码如下:(写的不规范什么的勿喷....如果有什么问题请告诉我,互相提高嘛)using System;using System.Collections.Generic;using System.Linq;using System...原创 2019-07-16 17:43:30 · 2217 阅读 · 1 评论 -
OpenCV的Delaunay三角剖分和Voronoi图的实现
左图:奥巴马总统的形象,使用CLM检测。 中心:Delaunay三角剖分。 右:对应的Voronoi图。 这篇文章将帮助我们了解Delaunay三角剖分和Voronoi图。什么是Delaunay 三角剖分?给定平面中的一组点,三角测量指的是将平面细分为三角形,将点作为顶点。在图1中,我们在左图像上看到一组界标,以及在中间图像中的三角测量。一组点可以有许原创 2016-12-20 15:08:56 · 10108 阅读 · 4 评论 -
人脸关键点定位CLM框架的使用
CLM框架的使用也就是CLM函数的使用方法,所以下面我的代码是用来进行照片中人脸关键点的定位,看完之后对这个流程应该会变得清晰起来。#include "CLM_core.h"#include #include #include #include using namespace std;using namespace cv;vector get_arguments(int原创 2016-12-19 13:04:49 · 3148 阅读 · 4 评论 -
OPENNI学习实践-openni+kinect 获取真实世界坐标
#include #include #include #include #include #include #include using namespace std;using namespace xn;using namespace cv;void CheckOpenNIError(XnStatus eResult,string sStatus){ if(eResu原创 2016-11-02 10:55:15 · 3089 阅读 · 1 评论 -
OPENNI学习实践-利用openni获取红外图像
#include #include #include #include #include using namespace std;using namespace xn;using namespace cv;void CheckOpenNIError(XnStatus eResult,string sStatus){ if(eResult != XN_STATUS_OK)原创 2016-11-01 16:58:55 · 1774 阅读 · 1 评论 -
OPENNI学习实践-利用opencv显示图像
这一部分我主要参考了http://blog.youkuaiyun.com/chenxin_130/article/details/6696187和http://blog.youkuaiyun.com/kh1445291129/article/details/39346987,这两篇博客,接下来我简要的总结一下,这两篇博客提到的方法。原创 2016-11-01 10:52:31 · 602 阅读 · 0 评论 -
OPENNI学习实践-win10(64bit)+openni1.5.4+vs2010+opencv2.4.11配置
首先,之前已经说了如何去安装openni及驱动和NITE,这篇主要讲安装之后如何进行配置。首先,根据1.5.4这个版本的说明,我们只能使用vs2010作为编辑器,所以,我也就重新安装了vs2010.然后首先是,如何配置64位的openni。当你安装好vs2010时,新建项目,之后会发现,我们使用的当前项目是基于32bit去编译的,所以第一步我们需要将这个项目改为通过64bit编译器去编译,原创 2016-10-31 21:22:41 · 2019 阅读 · 0 评论 -
openni+nite体感鼠标模拟
最近在学openni,所以做一个体感鼠标练练。主要功能,就是一只手负责定位鼠标在屏幕的位置,一只手进行点击或者其他的操作,并且可以通过一些特定方式进行左右手切换等操作。第一步就是设置鼠标以及屏幕等的参数,为了方便,我们使用ini文档进行配置,主要包含:屏幕尺寸,帧数,左右击键等配置。[Setting]ScreenRes_X=1440ScreenRex_Y=900nFPS=30Lef原创 2016-11-16 14:52:13 · 1227 阅读 · 0 评论 -
OPENNI中usergenerator的使用
#include #include #include #include #include #include #include using namespace std;using namespace xn;using namespace cv;void XN_CALLBACK_TYPE LostUser(UserGenerator& generator,XnUserID u原创 2016-11-08 08:48:55 · 744 阅读 · 0 评论 -
opencv+arduino进行物体点追踪
本文所要实现的结果是:通过在摄像头中选择一个追踪点,通过pc控制摄像头的舵机,使这一点始终在图像的中心。要点:使用光流法在舵机旋转的同时进行追踪,若该点运动,则摄像头跟踪联动。#include#include#include#include#include#includeusing namespace std;using namespace cv;#define WI原创 2016-08-30 15:10:31 · 13052 阅读 · 12 评论 -
使用opencv下的SVM分类器
关于svm分类器的基本原理,请参 考http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html。对于一般使用来说只需要知道它可以在训练之后进行数据分类就可以了。opencv内置了SVM的函数,接下来是如何使用。 首先我们必须了解SVM是用来将向量进行分类的,这也就意味着我们训练和分类的数据必须是向量。这个是原创 2016-06-19 10:49:23 · 1127 阅读 · 0 评论 -
OPENNI学习实践-用身体模拟鼠标
点击打开链接利用身体模拟鼠标,进行基础的绘图,其实就是画线。。。。,蛋疼的是录屏的时候录下来发现鼠标的位置不对。。。不过自己用的时候是对的原创 2016-11-18 09:48:17 · 505 阅读 · 0 评论 -
OPENNI学习实践-利用openni和opencv提取人的轮廓
#include #include #include #include #include #include #include using namespace std;using namespace xn;using namespace cv;void XN_CALLBACK_TYPE LostUser(UserGenerator& generator,XnUserID u原创 2016-11-08 15:22:47 · 1844 阅读 · 2 评论 -
OPENCV循环显示视频
#includeusing namespace std;using namespace cv;int main(){ VideoCapture capture("FireWing_Alpha.mov"); if(!capture.isOpened()) cout<<"fail to open!"<<endl; int frames=capture.get(CV_CAP_PRO原创 2017-01-03 15:37:36 · 3435 阅读 · 1 评论 -
使用OPENCV3图像对齐
图1. 左:一幅来自Prokudin-Gorskii 的图片(未对齐);右:对齐后图像1. 左边的图像是一个具有历史意义的照片的集合称为Prokudin-Gorskii集。图像是由使用一个早期的彩色摄像机拍摄。因为相机的机械性质,图像的颜色通道未对齐。右边的图像通过OPENCV3进行对齐后的图像。可以从这里的下载部分中的所有示例中的所有示例代码。在这篇文章中,我们将开始一个有趣的彩色摄翻译 2016-12-15 15:27:19 · 14208 阅读 · 5 评论 -
CLM人脸特征点识别框架示例使用
下面就来详细说下CLM算法流程: 一、模型构建之形状模型构建(延续ASM的形状模型函数),如(公式一)所示:(公式一) (公式一)中X-bar表示平均脸,P是形状变化的主成分组成的矩阵,它是一个关键的参数,下面就来看看它是如何得到的。假设我们有M张图片,每张图片有N个特征点, 每个特征点的坐标假设为(xi,yi),一张图像上的N个特征点原创 2016-11-26 21:15:18 · 5664 阅读 · 1 评论 -
利用scikit-learn进行人脸表面关键点的定位
我们大多数人都照镜子,不知道我们看起来有多好。但是,在判断自己的吸引力时,往往很难客观,而我们往往太尴尬而无法要求别人的意见。如果有一个计算机程序可以为你回答这个问题,你的形象怎么样?很漂亮,是吗?在这篇文章中,我将向你展示我们如何利用计算机视觉和机器学习从一个单一的照片来预测一个人的面部吸引力。我会用opencv,NumPy和scikit学习开发一个完全自动化的流水线,以一个人的脸的照片翻译 2016-11-22 15:16:18 · 2487 阅读 · 0 评论 -
图像分割代码合集
Computer Vision ResourcesMaintained by Jia-Bin HuangSubmit resource links hereLastest Update: July 4, 2011SoftwaresTopicResourcesReferencesFeature Extraction转载 2016-12-05 09:20:19 · 2249 阅读 · 0 评论 -
OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
这个是我自己做的粗略的螺旋丸的图,导出为png并带有alpha通道。最后和一只狗合成成这个样子。效果还是可以的。为了实现这个效果,首先我们要明白具有透明通道的图片的opencv的读取方式。在OpenCV里,正常是读取图像和写入图像默认都是忽略透明通道的,如果想要读取原图像中的透明通道,则在使用imread()函数时,后面的参数要使用CV_LOAD_IMAGE_UNCHANGED参数或是原创 2016-11-21 15:33:49 · 25047 阅读 · 8 评论 -
CLM框架的编译及自己在编译过程中的若干问题的解决
CLM是一个人体特征点提取的框架,他的功能是提取五官及脸的轮廓,同时可以检测人脸当前的朝向等,是一个不错的人脸检测框架。但是在编译过程中,还是会遇到不少问题。接下来我就说一下,在我的编译过程中遇到的问题,及解决方法。首先在这里下载压缩文件,打开后我们可以看到有vs2013和vs2012的项目,前面我说过了,可以通过打开这两个直接进行编译,但是现在我主要说一下如何利用cmake进行编译。原创 2016-12-02 09:47:34 · 1903 阅读 · 3 评论 -
利用手势控制arduino输出端口
#include<opencv2\opencv.hpp>#include<opencv\cv.h>#include<opencv\highgui.h>#include<math.h>#include<Windows.h>#include<string.h>using namespace cv;using namespace std;Mat frame;HANDLE hComm;LPC原创 2016-06-19 10:28:05 · 1780 阅读 · 0 评论