自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (6)
  • 论坛 (7)

转载 opencv 之 cv2.minAreaRect angle角度问题

经过经验总结和反复的trials and errors, 终于搞清楚了opencv中的 rotation angle角度问题。具体来讲,rotation angle 范围为[-90, 0), 具体角度测算方法可以分为两个步骤(如下图):1. x轴逆时针旋转到最近邻近边,该旋转角即为angle2. 邻近x轴的边即为矩形的宽,另一边为height原理图如下图:minAreaRect函数返回矩形的中心点坐标,长宽,旋转角度[-90,0),当矩形水平或竖直时均返回-90# -*- codi.

2020-10-14 14:39:12 31

转载 Pyqt5的使用 文件对话框的使用。

概述选取文件夹QFileDialog.getExistingDirectory() 选择文件QFileDialog.getOpenFileName() 选择多个文件QFileDialog.getOpenFileNames() 选择保存文件QFileDialog.getSaveFileName()python获取当前路径importos,sys使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(__file__)、os...

2020-10-14 13:30:19 15

原创 opencv 寻找轮廓线与轮廓线的交点, 轮廓与圆的交点

opencv 寻找轮廓线与圆的交点在项目过程中 我遇到了一个问题就是要求一段不规则轮廓线与一个圆的交点,网上查了一些资料,如果轮廓线是规则的话还能算出轮廓线的方程可以方便的解出交点,但是现在轮廓线是不固定的不规则的所以无法解析出轮廓线的方程, 那么我只能用最笨的办法,弄两个存放圆和轮廓的掩膜然后做 and 运算,找出数值是1 的店就是我要的交点了。程序如下:#计算轮廓和圆的交点,返回交点坐标。def get_contour_circle_intersection(contour,circle

2020-10-11 21:18:12 54 1

原创 pyQT5 学习使用 笔记 六 pyQt5+opencv 显示海康GIGE相机动态视频流

opencv 读取 海康GIGE相机视频流新项目中我们需要使用opencv读取海康威视的工业相机 MV-CA060-10GM 的视频流进行处理。那么首先我们要读取到相机的视频流,总所周知 opencv 读取视频流的办法就是使用 VideoCapture 函数 来读取。 但是经过多次测试,读取了文档和源代码 发现 opencv没有公版驱动可以和GIGE 协议的相机直接对接。那么怎么办呢?然后我想到了海康威视提供的SDK 开发包。在sdk里面翻找了一下 终于发现一批python的例程,所以说大公司就是.

2020-09-22 17:17:27 169 7

原创 pyQT5 学习使用 笔记 五 opencv+Qt 在Qt UI中显示 opencv 图像。

前文中我们 了解到了 python 中 如何 使用 Qt 的 重要的 信号 与 槽的传递 和执行机制。这也是Qt的一个最重要的机制。了解了这个机制,那么我们可以做很多事情了, 其实 通过前面的种种学习我们也离目的越来越近。我的目的就是 通过 python 实现 opencv+Qt 联合编程。 原先用c++也是可以的,但是现在发现 远远没有 python 来的方便,快捷。闲话不多说,下面我们来看如何实现 opencv+Qt 在python中的联合编程的。...

2020-09-22 10:29:52 25

转载 pyQT5 学习使用 笔记 四 PyQt5事件,信号和槽。

在这一部分的pyqt5笔记,我们将探讨PyQt5中的事件Event所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、window manager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。在事件模型中,有三个参与者:事件源 事件对象 事件接收者事件源是状态发生变化的对象。它会生成事件。事件(对象)封装了事件源中状态的变动。事件接收者是要通知的对象。事件源对象将事件处理的工作交给事件接收

2020-09-18 11:39:30 26

转载 pyQT5 学习使用 笔记 三 Qt Designer的使用

总所周知Qt 有一个Qt Designer 工具来快速开发 Qt的UI 界面,那么 在python 里面可以使用Qt Designer吗 在前文中我们看到窗口都是 靠代码一点点敲出来的 这势必会增加程序开发的 难度。所以Qt Designer 是一个必要的工具,所以 python 中肯定也是有集成的,下面 我们就来学习如何在 python中 使用Qt Designer 工具。首先需要 安装PyQt5-tools 工具包。在cmd命令行中 键入pip install -i https://...

2020-09-17 17:28:41 36

原创 pyQT5 学习使用 笔记 二 pyQt5的基本功能。

pyQt5 是一个集成度非常高的 python 工具包, 几句代码就可以生成一个小窗口例:import sysfrom PyQt5 import QtWidgets, QtCoreapp = QtWidgets.QApplication(sys.argv)widget = QtWidgets.QWidget()widget.resize(400, 100)widget.setWindowTitle("This is a demo for PyQt Widget.")widget.s

2020-09-17 14:48:33 36

原创 pyQT5 学习使用 笔记 一 安装pyQT5

之前已经学习过了QT 的 基本使用了解了 信号和槽 的机制。由于新项目需要跨平台,所以 在视觉开发包的选择上 选择了opencv-python,所幸 QT也有pyQT5 的包可以和 opencv-python 联合使用开发。废话不说了 开始安装吧。打开cmd命令行界面输入...

2020-09-17 13:06:52 41

原创 Python中的条件表达式,也称之为三元运算符,和c++中的条件运算符

今天在看别人的C++程序的时候遇到了一组用条件运算符 ? : 写成的代码,想改成python 发现 python中 没有 条件运算符。查了一下原来python中是使用条件表达式也就是三元预算符来实现下面是代码uchar p2 = (i == 0) ? 0 : *(p - dst.step + j);c++的? : 运算符通用格式如下:expression1 ? expressions : expression3如果 expreesion1为true 则整个条件表达式的值为expre

2020-09-05 17:48:09 38

原创 opencv-python 求两点间距离以及点到直线距离函数

求两点间距离/***** 求两点间距离*****/float getDistance(CvPoint pointO, CvPoint pointA){ float distance; distance = powf((pointO.x - pointA.x), 2) + powf((pointO.y - pointA.y), 2); distance = sqrtf(distance); return distance;}点到直线的距离:P到AB的距离

2020-09-02 21:26:57 60

原创 《机器学习实战》 学习笔记 Classifying with k-Nearest Neighbors (k-邻近算法)

Classifying with k-Nearest Neighbors (k-邻近算法)本文我们要学习内容k-邻近分类算法 从文本文件中解析和导入数据 使用Matplotlib包创建扩散图 归一化数值k-邻近分类算法

2020-08-30 21:18:09 35

翻译 opencv Histogram Equalization 直方图均衡。

在本节中,我们将学习直方图均衡化的概念,并使用它来提高我们图像的对比度。Theory考虑一幅图像,它的像素值被限制在一些特定的值范围内。例如,更亮的图像将所有像素限制在高值。但是一个好的图像应该有来自图像所有区域的像素。所以你需要拉伸直方图的两端(如下图所示,来自维基百科),这就是直方图均衡化所做的(简单的说)。这通常会改善图像的对比度。我建议你去维基百科上的直方图均衡化页面了解更多细节。它有一个很好的解释和算出的例子,所以你会理解几乎所有后,读它。相反,在这里我们将看到它的Numpy实现

2020-08-30 09:01:19 36

翻译 opencv 中 那些 常用的轮廓属性和函数

在这里,我们将学习提取一些常用的属性,如固体,等效直径,掩模图像,平均强度等。更多功能可以在Matlab的区域道具文档中找到。1. Aspect Ratio(纵横比)它是对象的边界矩形的宽度与高度的比率。x,y,w,h = cv.boundingRect(cnt)aspect_ratio = float(w)/h2. ExtentExtent范围是指轮廓面积与边界矩形面积之比。area = cv.contourArea(cnt)x,y,w,h = cv.boundin

2020-08-29 15:16:21 42

转载 OpenCV中的新函数connectedComponentsWithStats使用

在OpenCV3中有了新的专门的函数cv::connectedComponents()和函数cv::connectedComponentsWithStats()定义:intcv::connectedComponents(cv::InputArraynimage,//input8-bitsingle-channel(binary)cv::OutputArraylabels,//outp...

2020-08-29 11:23:25 39

原创 opencv 获取轮廓的 质心 python实现。

opencv 获取轮廓的 质心 python实现。使用findContours 找到 图像轮扣后,我们需要得到轮廓的 质心,那么应该怎么做呢?如果想根据多边形的轮廓信息得到多边形的多阶矩,可以使用类moments,这个类可以得到多边形和光栅形状的3阶以内的所有矩,类内有变量m00,m10,m01,m20,m11,m02,m30,m21,m12,m03,比如多边形的质心为 x = m10 / m00,y = m01 / m00。mu[i] = moments( contours[i], fal.

2020-08-28 09:11:09 178

转载 python -- lambda表达式

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:add = lambda x, y : x+yadd(1,2) # 结果为3那么到底要如何使用lambda表达式呢?..

2020-08-25 12:41:33 29

转载 python 使用sorted方法对二维列表排序

list3 = [['1', '15', '8'], ['1', '14', '2'], ['1', '15', '9'], ['1', '14', '3'], ['1', '16', '0'], ['1', '15', '1'], ['1', '16', '2'], ['1', '15', '10'], ['1', '16', '3'], ['1', '15', '12']]def sort3(list1):  #对数字列表排序 list2 = sorted(list1.

2020-08-25 12:33:10 101

转载 opencv python 角点坐标的提取

https://blog.csdn.net/zhu_hongji/article/details/81235643图像特征描述角点检测原理ret,labels,stats,centroids=cv2.connectedComponentsWithStats(dst)import cv2 import numpy as npimport matplotlib.pyplot as pltimg =cv2.imread('E:/python/ha.png') imgray=cv2.cvtColo

2020-08-21 12:20:40 131

转载 python numpy 中 np.vstack()和np.hstack()

在这里我们介绍两个拼接数组的方法:np.vstack():在竖直方向上堆叠np.hstack():在水平方向上平铺import numpy as nparr1=np.array([1,2,3])arr2=np.array([4,5,6])print np.vstack((arr1,arr2)) print np.hstack((arr1,arr2)) a1=np.array([[1,2],[3,4],[5,6]])a2=np.array([[7,8],[9,10],[11,12

2020-08-21 12:06:56 79

原创 opencv python 各种轮廓排序

OpenCV轮廓排序如果轮廓线是闭合的 就使用面积来排序使用cv2.contourArea() 获得轮廓面积后进行排序:如下import cv2import numpy as npfrom numpy import random as nrfrom skimage import morphology,data,colorfrom skimage import img_as_float,img_as_ubytedef imgContoursROI(): """使用查找到的..

2020-08-19 17:30:28 242

转载 skimage与opencv图片格式的相互转换

skimage是python的一个图像库,常常与matplotlib一起作为视频、图像类的基本库。而opencv作为非常流行的视觉库,在图像处理中使用非常常见,本篇介绍两种库的图像格式的相互转换skimage图像格式通道:RGB像素值:[0,1]Opencv图像格式通道:BGR像素值:[0,255]转换转换过程现封装如下:def skimage2opencv(src): src *= 255 src.astype(int) cv2.cvtCo

2020-08-11 11:09:19 74

转载 python 图像的细化(骨架抽取)

图像的细化主要是针对二值图而言所谓骨架,可以理解为图像的中轴,,一个长方形的骨架,是它的长方向上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。骨架的获取主要有两种方法:(1)基于烈火模拟设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。(2)基于最大圆盘目标的骨架是由目标内所有内切圆盘的圆心组成我们来看看典型的图形的骨架(用粗线表示)细化的算法有很多种,但比较常用的算法是查表法

2020-08-10 17:28:36 119

转载 OpenCV曲线拟合与圆拟合

OpenCV曲线拟合与圆拟合使用OpenCV做图像处理与分析的时候,经常会遇到需要进行曲线拟合与圆拟合的场景,很多OpenCV开发者对此却是一筹莫展,其实OpenCV中是有现成的函数来实现圆拟合与直线拟合的,而且还会告诉你拟合的圆的半径是多少,简直是超级方便,另外一个常用到的场景就是曲线拟合,常见的是基于多项式拟合,可以根据设定的多项式幂次生成多项式方程,然后根据方程进行一系列的点生成,形成完整的曲线,这个车道线检测,轮廓曲线拟合等场景下特别有用。下面就通过两个简单的例子来分别学习一下曲线拟合与圆拟合的

2020-08-10 17:12:36 173

转载 基于opencv的固定阈值分割_自适应阈值分割

阈值分割、自适应阈值分割一、threshold()函数1.1 threshold()函数各参数详解doublethreshold(InputArraysrc,OutputArraydst,doublethresh,doublemaxval,inttype)Ø 第一个参数,InputArray类型的src,输入数组,填单通道 , 8或...

2020-08-07 12:48:27 49

转载 【Python-opencv篇】 bitwise_and、bitwise_not等图像基本运算及掩膜

1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask=noArray(), int

2020-08-06 17:17:33 123

转载 openCV任意几何形状感兴趣区域(ROI)提取

图像感兴趣区域(ROI)提取主要使用掩模来进行。掩模是二值图像,感兴趣区域的掩模值设置为255,非感兴趣区域的掩模值为0获取掩模的方法主要有两种方法一使用opencv中Mat函数方法,调用Mat(Rect).setTo方法设置掩模 Mat Mat::operator()( const Rect& roi ) const //调用Mat(Rect).setTo方法 mask(rect).setTo(255);方法二在全为0的原始掩模中画一个封闭区域,使用漫水填充算法填充封闭区..

2020-08-06 17:03:14 97

原创 opencv 轮廓特征应用:按轮廓剪切图像ROI

有时我们在实际应用中会遇到要对 某个轮廓对象内的图像进行处理 时,我们需要把这部分图像单独提取出来,这是我们可以使用指定轮廓做图像剪切的 ROIc++实现void imgContoursROI()//轮廓roi{ //1.查找轮廓的预处理 Mat srcImg = imread("D:/ImageTest/convex.png"); Mat copyImg = srcImg.clone();// GaussianBlur(srcImg,srcImg,Si...

2020-08-06 16:35:34 114

原创 opencv 查找并绘制轮廓

一个轮廓一般对应一系列的点, 也就是图像中的一条曲线。其表示方法可能根据不同的情况而有所不同。 在opencv中可以用findContours()函数从二值图像查找轮廓findContours()函数用于在二值图像中

2020-08-05 17:08:03 70

转载 python numpy中的随机数模块

numpy.random模块中提供啦大量的随机数相关的函数。1 numpy中产生随机数的方法  1)rand()   产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状  2)randn()  产生标准正太分布随机数,参数含义与random相同  3)randint()  产生指定范围的随机数,最后一个参数是元祖,他确定数组的形状import numpy as npfrom numpy import random as nr #只显示小数点后两位np.set_pr

2020-08-05 09:06:21 74

原创 opencv 直方图均衡化

熵熵(entropy)指的是体系的混乱的程度,它在控制论、概率论、数论、天体物理、生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的 定义,是各领域十分重要的参量。熵由鲁道夫·克劳修斯(Rudolf Clausius)提出,并应用在热力学中。后来在,克劳德·艾尔伍德·香农(Claude Elwood Shannon)第一次将熵的概念引入到信息论中来。信息熵利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量

2020-08-04 13:20:18 41

原创 opencv 的 图像 变换 python 实现

图像变换的基本模型变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等,如下图:刚体变换(图像旋转) 如果一幅图像中的两点间的距离变换到另一幅图像中后任然保持不变,则这种变换称为刚体变换(Rigid Transform).刚体变换仅局限于平移,旋转和镜像. 在二位控件中,点(x,y)经过刚体变换到点(x',y')的变换公式为: ...

2020-08-01 16:30:42 66

原创 opencv remap() python 的实现 以及遇到的疑问。

opencv中重映射函数 remap() 的python实现dst=cv.remap(src, map1, map2, interpolation[, dst[, borderMode[, borderValue]]])Parameterssrc Source image. map1 类型为CV_16SC2、CV_32FC1或CV_32FC2的(x,y)点或x值的第一个映射。有关将浮点表示转换为定点的详细信息,请参阅convertMaps。 map2 第二个y值的映射分

2020-08-01 09:10:24 58

转载 线性代数:转置矩阵(matrix transpose)和逆矩阵(matrix inverse)

这一篇是为了后面着色效果的数学基础做积累,之前我们使用矩阵的大部分情况都是直接的仿射空间变换,就是仿射空间A变换到仿射空间B,使用矩阵也都是如下: 矩阵T*齐次坐标V = 齐次坐标V' 其计算细节也就是矩阵行与向量列的点积,其计算意义也就是获得新仿射空间中的坐标分量,也聊了很多了。 这次我们就来学两个矩阵的操作,一个是矩阵的转置操作(得到转置矩阵),一个是矩阵的逆操作(得到逆矩阵)。 ①.先看下数学上怎么定义转置矩阵的: 将...

2020-07-31 21:55:16 108

转载 python 创建与遍历List二维列表

python 创建List二维列表lists = [[] for i in range(3)] # 创建的是多行三列的二维列表for i in range(3): lists[0].append(i)for i in range(5): lists[1].append(i)for i in range(7): lists[2].append(i)print("lists is:", lists)# lists is: [[0, 1, 2], [0, 1, 2, 3,

2020-07-28 21:27:30 115

转载 Opencv 创建图像时,CV_8UC1,CV_32FC3等参数的含义

CV_<bit_depth>(S|U|F)C<number_of_channels>1--bit_depth---比特数---代表8bite,16bites,32bites,64bites---举个例子吧--比如说,如 如果你现在创建了一个存储--灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张 灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位--所以它对 应的就是C

2020-07-28 15:24:03 60

原创 python opencv 读取图像信息

读取图像高度使用cv2.imread()函数可以读取图片的高,宽,通道数。奇异返回值的第一个值就是图像的高度。具体代码如下:import cv2 as cvimport numpy as npim=cv.imread('fruit.png')height=im.shape[0]cv.imshow('origin image',im)print(im.shape)print('height is:',height)cv.waitKey()(477, 686, 3)heigh

2020-07-28 15:08:03 66

原创 Python中shape简易用法

通过安装导入numpy库,矩阵(ndarray)的shape属性可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下:import numpy as npx = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]])#输出数组的行和列数print x.shape #结果: (4, 3)#只输出行数print x.shape[0] #结果: 4#只输出列数print x.shape[1] #结果: 3...

2020-07-28 15:00:52 36

转载 opencv 图像处理 重映射 remap()

重映射 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获得一些插值为非整数像素的坐标,因为原图像与目标图像的像素坐标不是一一对应的。 一般情况下,我们通过重映射来表达每个像素的 位置(x,y),像这样: g(x,y)=f(h(x,y))在这里g()是目标图像,f()是源图像,而h(x,y)的映射方法函数。来看个例子。 若有一幅图像I,对其按照下面条件作重映射: ...

2020-07-28 14:36:53 116

转载 opencv 算子 角点算法 Harris

参考https://blog.csdn.net/poem_qianmo/article/details/29356187 https://www.cnblogs.com/polly333/p/5416172.html算法流程:利用水平,竖直差分算子对图像的每个像素进行滤波以求得Ix,Iy,进而求得M中的四个元素的值。算法源码:代码中如果array为-1,0,1,-1,0,1,-1,0,1}则是求解X方向的,如果为{-1,-1,-1,0,0,0,1,1,1}为Y方向...

2020-07-27 16:55:28 47

猫游记辅助工具代码.rar

猫游记的辅助工具,实现了自动打怪自动走路录制脚本等功能,写这个东西只是为了了解c#中的对html的分析和操控,希望对大家有所帮助

2013-03-04

猫游记辅助工具代码

猫游记辅助工具,实现了自动打怪,自动走路,录制移动脚本等功能。不过操作比较繁琐。随便弄着玩的目的是熟悉c#中分析和控制html

2013-03-04

sampThreadWait.rar

QWaitCondition提供了一另外一种改进的线程同步方法,QWaitCondition与QMutex结合,可以使一个线程在满足一定条件时通知其他多个线程,使它及时作出响应, 这样比只是用互斥量效率要高一些

2020-05-04

QtThread.rar

QtThread 多线程DEMO程序 ,程序使用了qThread类编程,包括使用 QMutex ,QMutexLocker做线程同步

2020-05-04

基于halcon的三种图像清晰度算法

基于halcon的三种图像清晰度算法,可以用于图像的清晰度判断,相机的自动对焦程序的焦距判断等. 敏感度可能不太好,可以学习参考

2018-12-16

自动对焦评价函数

自动对焦评价函数的评价函数 ,对图像的清晰度焦点做出评价。越高清晰度越清楚。

2018-01-04

100分求助如何用vb做一个脚本执行器可以在webBrowse里执行一段js脚本

发表于 2006-09-20 最后回复 2006-09-20

菜鸟问题 怎样用winsock传输文件 给个例子吧.

发表于 2005-09-16 最后回复 2005-09-16

我在一个mid 父窗体中打开了几个子窗体 怎样把某一个子窗体设置为最顶层的受我控制的窗体

发表于 2004-12-21 最后回复 2004-12-21

关于捕获奖盘方向健, 请高手帮忙

发表于 2004-08-06 最后回复 2004-10-05

怎样在VB中调用 系统附件中的计算机程序??

发表于 2004-07-20 最后回复 2004-07-20

取得打印机信息的问题

发表于 2004-07-12 最后回复 2004-07-14

怎样读取计算机已有的打印机列表

发表于 2004-07-12 最后回复 2004-07-12

空空如也
提示
确定要删除当前文章?
取消 删除