Tag: 计算机视觉

在OpenCV中将RGB转换为黑白

我想知道如何将RGB图像转换成黑白(二进制)图像。 转换后,如何将修改的图像保存到磁盘?

OpenCV 2.2中的像素访问

您好我想使用opencv来告诉我一个空白和白色图像的像素值,所以输出看起来像这样 10001 00040 11110 00100 这是我目前的代码,但我不知道如何访问CV_GET_CURRENT调用的结果..任何帮助? IplImage readpix(IplImage* m_image) { cout << "Image width : " << m_image->width << "\n"; cout << "Image height : " << m_image->height << "\n"; cout << "—————————————–\n"; CvPixelPosition8u position; CV_INIT_PIXEL_POS(position, (unsigned char*)(m_image->imageData), m_image->widthStep, cvSize(m_image->width, m_image->height), 0, 0, m_image->origin); for(int y = 0; y < m_image->height; ++y) // FOR EACH […]

计算旋转的2D图像的平移值和旋转angular度

我有两个图像,其中之一是原始图像,第二个是转换的图像。 我必须找出有多less度转换图像旋转使用3×3转换matrix。 另外,我需要find从原点转换多远。 这两个图像都是灰度并保存在matrixvariables中。 他们的大小是相同的[350 500] 。 我发现了这样的几个讲义。 讲义说,我应该使用下面的matrix公式进行轮换: 对于平移matrix,给出公式: 一切都很好。 但是有两个问题: 我无法想象如何使用MATLAB来实现公式。 公式的形状是findx' , y'值,但我已经得到了x , x' , y , y'值。 我需要find旋转angular度(θ)和t x和t y 。 我想知道matrix中x , x' , y , y'的等价性。 我有以下代码: rotationMatrix = [ cos(theta) sin(theta) 0 ; … -sin(theta) cos(theta) 0 ; … 0 0 1]; translationMatrix = [ 1 0 […]

如何在不知道物体与相机之间的距离的情况下,从图像中获取物体的实际尺寸?

我必须制作一个移动应用程序来计算图像中物体的实际尺寸。 我已经做了一些研究,发现有用的[问题]: 你如何find给定图像的对象的高度? 照相机的距离与物体的实际尺寸之间的关系实际上并不那么复杂,传感器上物体的尺寸与物体在实际生活中的尺寸之比等于焦距和到物体的距离。 distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) ————————————————————————— object height (pixels) * sensor height (mm) 但如果不知道距离,如何得到物体真实高度的值? 从图像中创build三维模型的工具是否具有真实的生命维度?

如何定义OpenCV中stream域的标记?

我正在用OpenCV为Android写作。 我使用标记控制分水岭来分割类似于下图的图像,而无需用户手动标记图像。 我打算使用区域最大值作为标记。 minMaxLoc()会给我的价值,但我怎么能限制它是我感兴趣的blob? 我可以利用findContours()或cvBlob blob的结果限制ROI并将最大值应用于每个blob?

如何使黑板文本显得更清晰使用MATLAB?

如果我想让最终的图像更清晰一些,那么我应该放什么样的滤镜呢? 我的意思是只有两个不同的颜色,一个是白板,一个是白板。

基于4个共面点的单应matrix计算相机姿态

我在video(或图像)中有4个共面点,代表一个四边形(不一定是正方形或矩形),我希望能够在其上方显示一个虚拟立方体,其中立方体angular落正好位于angular落的video四。 由于点是共面的,我可以计算单位正方形(即[0,0] [0,1] [1,0] [1,1])的angular点和四边形的video坐标之间的单应性。 从这个单应性我应该能够计算一个正确的相机姿态,即[R | t]其中R是一个3×3的旋转matrix,t是一个3×1的平移vector,以便虚拟立方体位于video四边形上。 我已经阅读了很多解决scheme(其中一些是关于SO的),并试图实现它们,但是它们似乎只能在一些“简单”的情况下工作(比如当video四边形是正方形时),但在大多数情况下不起作用。 这里是我尝试的方法(大多数是基于相同的原则,只有翻译的计算略有不同)。 设K是相机的固有matrix,H是单应matrix。 我们计算: A = K-1 * H 令a1,a2,a3为A的列向量,r1,r2,r3为旋转matrixR的列向量。 r1 = a1 / ||a1|| r2 = a2 / ||a2|| r3 = r1 x r2 t = a3 / sqrt(||a1||*||a2||) 问题是这在大多数情况下不起作用。 为了检查我的结果,我将R和t与OpenCV的solvePnP方法(使用以下3D点[0,0,0] [0,1,0] [1,0,0] [1,1 ,0])。 由于我以相同的方式显示立方体,所以我注意到在每种情况下solvePnP提供了正确的结果,而从单应性得到的姿态大多是错误的。 从理论上讲,因为我的观点是共面的,所以可以从单应计算姿态,但是我找不到从H计算姿势的正确方法。 任何见解我做错了什么? 尝试@ Jav_Rock的方法后编辑 嗨Jav_Rock,非常感谢您的回答,我尝试了您的方法(以及其他许多方面),这似乎是或多或less的好。 不过,我在计算基于4个共面点的姿势时仍然碰到一些问题。 为了检查结果,我将它与solvePnP的结果进行了比较(由于迭代重投影误差最小化方法,结果会好得多)。 这里是一个例子: 黄色立方体:解决PNP 黑魔方:Jav_Rock的技术 […]

如何validation摄像头校准的正确性?

我完全不熟悉相机校准技术…我正在使用OpenCV棋盘技术…我使用Quantum的networking摄像机… 这是我的观察和步骤.. 我保留了每个棋方方= 3.5厘米。 这是一个7×5的棋盘, 6×4的内angular。 我在networking摄像头的距离为1到1.5米处采集了10张不同视图/姿势的图像。 我正在学习由Bradski 学习OpenCV中的C代码进行校准。 我的校准码是 cvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO); 在调用这个函数之前,我将沿着固有matrix的对angular线的第一个和第二个元素作为一个来保持焦距的比例不变,并使用CV_CALIB_FIX_ASPECT_RATIO 随着棋盘距离的变化, fx和fy随着fx:fy变化几乎等于1.有cx和cy值在200到400的顺序fx和fy在300-700的数量级我改变了距离。 目前我已经把所有的失真系数归零,因为我没有得到包括失真系数在内的好结果。 我原来的形象看起来比不失真的英俊! 我是否正确地进行校准? 我应该使用除CV_CALIB_FIX_ASPECT_RATIO其他选项吗? 如果是,哪一个?

人脸识别库

我正在为大学项目寻找免费的面部识别库。 我不是在寻找人脸检测 。 我正在寻找实际的认可。 这意味着查找包含指定面或库的图像,以计算特定面之间的距离。 目前我正在使用OpenCV来检测人脸和粗糙的Eigenfacealgorithm进行识别。 但是我认为应该有比自己写的Eigenfacealgorithm更好的性能。 我不是在谈论速度的performance,我正在寻找一个比简单的特征脸方法更好的结果库。 我看了一眼Faint ,但是看起来这个库对于我自己的应用程序来说并不是很可重用。 我对Python,Java,C ++,C或类似的库感到满意。 最好的情况是,如果它可以在Windows机器上运行,因为我现在只依赖一些外部的Windows代码。

简单而快速的方法来比较图像的相似性

我需要一个简单而快速的方法来比较两个图像的相似性。 即我想获得高价值,如果他们包含完全相同的东西,但可能有一些略有不同的背景,并可能被移动/调整了几个像素。 (更具体地说,如果这很重要:一张图片是一个图标,另一张图片是截图的一个分区,我想知道这个分区是否正好是图标。) 我手边有OpenCV ,但我还是不习惯。 到目前为止,我考虑过的一种可能性是:将这两幅图片分成10×10个单元格,对于这100个单元格中的每一个,比较颜色直方图。 那么我可以设置一些补偿阈值,如果我得到的价值高于这个阈值,我认为它们是相似的。 我还没有尝试过,但它的效果如何,但我想这将是足够好的。 图像已经非常相似(在我的使用情况),所以我可以使用一个相当高的阈值。 我想有很多其他可能的解决scheme,这可能会或多或less地工作(因为任务本身非常简单,因为我只是想检测相似性,如果他们真的很相似)。 你会build议什么? 有几个关于从图像获取签名/指纹/散列的非常相关/类似的问题: OpenCV / SURF如何从描述符中生成图像哈希/指纹/签名? 图像指纹比较许多图像的相似性 近乎重复的图像检测 OpenCV:指纹图像,并与数据库进行比较 。 更多 , 更多 , 更多 , 更多 , 更多 , 更多 另外,我偶然发现了这些具有获取指纹function的实现: pHash imgSeek ( GitHub repo )(GPL)基于论文的Fast Multiresolution Image Querying 图像匹配 。 非常相似,我正在寻找。 与pHash类似,基于任何types图像的图像签名,Goldberg等人 使用Python和Elasticsearch。 iqdb ImageHash 。 支持pHash。 关于感知图像哈希的一些讨论: 在这里 有点偏离:有很多方法来创buildaudio指纹。 MusicBrainz是一种为歌曲提供基于指纹的查询的networking服务, 在他们的wiki中有很好的概述 。 […]