Tag: opencv

我如何检测和跟踪使用OpenCV的人?

我有一个静止的相机,指向室内的地方。 人们会在相距约5米的地方走过相机。 使用OpenCV ,我想要检测个体走过去 – 我理想的返回是一个检测到的个人数组,边界矩形。 我看了几个内置的示例: 没有一个Python样本真的适用 C blob跟踪样本看起来很有前景,但不接受实况video,这使testing变得困难。 这也是最复杂的示例,提取相关知识并将其转换为Python API有问题。 C'motempl'样本也看起来很有前景,因为它可以从后续的video帧中计算出轮廓。 据推测,我可以使用它来find强连通的组件,并提取单个斑点和边界框 – 但我仍然试图找出一种方法来识别在随后的帧中发现的斑点作为相同的斑点。 任何人都可以提供指导或样本做这个 – 最好在Python ?

旋转图像并裁剪黑色边框

我的应用程序:我想旋转一个图像(使用OpenCV和Python) 目前,我已经开发了旋转input图像的下面的代码,用黑色边框填充它,给我答:我想要的是B-旋转图像中最大的可能区域裁剪窗口。 我称之为轴alignment边界框。 这与旋转和裁剪基本相同,但是我无法得到有关该问题的答案。 此外,答案显然只适用于方形图像。 我的图像是矩形的。 代码给A: import cv2 import numpy as np def getTranslationMatrix2d(dx, dy): """ Returns a numpy affine transformation matrix for a 2D translation of (dx, dy) """ return np.matrix([[1, 0, dx], [0, 1, dy], [0, 0, 1]]) def rotateImage(image, angle): """ Rotates the given image about it's centre """ image_size = […]

为什么OpenCV的MSER的Python实现和Java实现创build不同的输出?

我一直在尝试使用OpenCV的MSERalgorithm的Python实现(opencv 2.4.11)和Java实现(opencv 2.4.10)。 有趣的是,我注意到MSER的检测返回Python和Java的不同types的输出。 在Python中,detect会返回一列点列表,其中每个点列表代表一个检测到的斑点。 在Java中,返回一个Mat ,每一行都是一个单一的点,其直径代表检测到的一个斑点。 我想重现Java中的Python行为,其中blob由一组点定义,而不是一个点。 任何人都知道发生了什么事? python: frame = cv2.imread('test.jpg') mser = cv2.MSER(**dict((k, kw[k]) for k in MSER_KEYS)) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) regions = mser.detect(gray, None) print("REGIONS ARE: " + str(regions)) where the dict given to cv2.MSER is {'_delta':7, '_min_area': 2000, '_max_area': 20000, '_max_variation': .25, '_min_diversity': .2, '_max_evolution': 200, '_area_threshold': 1.01, '_min_margin': […]

OpenCV / SURF如何从描述符中生成图像哈希/指纹/签名?

这里有一些话题对于如何find类似的图片非常有帮助。 我想要做的是获得一张图片的指纹,并find数码相机拍摄的不同照片上的相同图片。 SURFalgorithm接缝是在缩放,angular度和其他失真方面独立的最佳方式。 我使用OpenCV和SURFalgorithm来提取样本图像上的特征。 现在我想知道如何将所有这些特征数据(位置,拉普拉斯,大小,方向,粗麻布)转换成指纹或散列。 该指纹将被存储在数据库中,并且search查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较。 更新: 似乎没有办法将所有的描述符向量转换成简单的哈希。 那么将图像描述符存储到数据库中进行快速查询的最佳方法是什么? 词汇树会成为一个select吗? 我会非常感谢任何帮助。

在cv :: solvePnP的世界坐标中的摄像机位置

我有一个校准摄像机(固有的matrix和失真系数),我想知道相机的位置知道一些3d点和它们在图像中的相应点(2d点)。 我知道cv::solvePnP可以帮助我,读完这个后 ,我明白了solvePnP rvec和tvec的输出是摄像机坐标系中对象的旋转和平移。 所以我需要找出世界坐标系下的相机旋转/平移。 从上面的链接看来,代码很简单,在python中: found,rvec,tvec = cv2.solvePnP(object_3d_points, object_2d_points, camera_matrix, dist_coefs) rotM = cv2.Rodrigues(rvec)[0] cameraPosition = -np.matrix(rotM).T * np.matrix(tvec) 我不知道Python / numpy的东西(我正在使用C ++),但是这对我来说并没有什么意义: rvec,solvePnP的tvec输出是3x1matrix,3个元素的向量 cv2.Rodrigues(rvec)是一个3x3matrix cv2.Rodrigues(rvec)[0]是一个3x1matrix,3个元素向量 cameraPosition是一个3×1 * 1x3matrix乘法,即一个.. 3x3matrix。 我怎么可以在opengl中使用简单的glTranslatef和glRotate调用?

使用OpenCV提取HoG特性

我正在尝试使用OpenCV的HoG API提取function,但是我似乎无法find允许我这样做的API。 我想要做的是从我的所有数据集(一组正面和负面的图像)使用HoG提取function,然后训练我自己的SVM。 我在OpenCV下偷看到HoG.cpp,并没有帮助。 所有的代码都被埋在复杂性之中,并且需要满足不同的硬件(例如英特尔的IPP) 我的问题是: 是否有任何OpenCV API可用于提取所有要提交给SVM的特征/描述符? 如果有什么可以用它来训练我自己的SVM? 如果没有,那里有没有现成的图书馆可以完成同样的事情? 到目前为止,我实际上是从Processing(Java)向C ++移植一个现有的库(http://hogprocessing.altervista.org/),但是它仍然非常慢,检测至less需要16秒 有没有其他人成功提取HoGfunction,你是如何绕过它? 你有没有可以使用的开源代码? 提前致谢

如何在OpenCV中裁剪CvMat?

我有一个图像转换成CvMatmatrix说CVMat source 。 一旦我从source获得一个感兴趣的区域,我希望algorithm的其余部分只应用到感兴趣的区域。 为此,我想我必须以某种方式裁剪我无法做到的sourcematrix。 有没有一种方法或函数可以裁剪一个CvMatmatrix并返回另一个裁剪的CvMatmatrix? 谢谢。

在CV_8U和CV_32F之间有什么区别,我在转换它们时应该担心什么?

我有一些代码正在发挥作用,我怀疑这是因为我正在操作错误的数据types或差的转换。 它将cv::Mattypes的CV_8U (这是在用cv::imread读取一个jpg时创build的) cv::Mat对象, CV_32F和CV_32S 。 这些数据types之间有什么区别,在转换它们之间需要确定什么?

在pkg-configsearchpath中找不到软件包opencv

我使用https://help.ubuntu.com/community/OpenCV中的说明安装了OpenCV $ sudo su $ sudo apt-get install build-essential $ sudo apt-get install libavformat-dev $ sudo apt-get install ffmpeg $ sudo apt-get install libcv2.3 libcvaux2.3 libhighgui2.3 python-opencv opencv-doc libcv-dev libcvaux-dev libhighgui-dev 现在当我执行“pkg-config –cfalgs –libs opencv”我得到这个错误: Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv.pc' to the […]

如何从图像中裁剪最大的矩形

我有几张桌子上的图片。 我想从图像中裁剪页面。 一般来说,页面将是图像中最大的矩形,但是矩形的所有四边在某些情况下可能不可见。 我正在做以下但没有得到所需的结果: import cv2 import numpy as np im = cv2.imread('images/img5.jpg') gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(gray,127,255,0) _,contours,_ = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) areas = [cv2.contourArea(c) for c in contours] max_index = np.argmax(areas) cnt=contours[max_index] x,y,w,h = cv2.boundingRect(cnt) cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2) cv2.imshow("Show",im) cv2.imwrite("images/img5_rect.jpg", im) cv2.waitKey(0) 以下是一些例子: 第一个例子 :我可以在这个图像中find矩形,但是,如果剩余的部分也可以被裁剪出来。 第二个例子 :在这个图像中找不到矩形的正确尺寸。 第三个示例 :无法在此图像中find正确的尺寸。 第四例 :与此相同。