草庐IT

opencv_world

全部标签

OpenCV #以图搜图:感知哈希算法(Perceptual hash algorithm)的原理与实验

1.介绍感知哈希算法(PerceptualHashAlgorithm,简称pHash)是哈希算法的一种,主要用来做相似图片的搜索工作。 2.原理感知哈希算法(pHash)首先将原图像缩小成一个固定大小的像素图像,然后将图像转换为灰度图像,通过使用离散余弦变换(DCT)来获取频域信息。然后,根据DCT系数的均值生成一组哈希值。最后,利用两组图像的哈希值的汉明距离来评估图像的相似度。魔法:概括地讲,感知哈希算法一共可细分八步:缩小图像:将目标图像缩小为一个固定的大小,通常为32x32像素。作用是去除各种图像尺寸和图像比例的差异,只保留结构、明暗等基本信息,目的是确保图像的一致性,降低计算的复杂度。

棋盘格测距-单目相机(OpenCV/C++)

一、文章内容简述:1’通过cv::findChessboardCorners寻找棋盘格角点2‘用cv::solvePnP计算旋转向量rvec和平移向量tvec3’通过公式计算相机到棋盘格的距离floatdistance=sqrt(tvec.at(0,0)*tvec.at(0,0)+tvec.at(1,0)*tvec.at(1,0)+tvec.at(2,0)*tvec.at(2,0))/10; 二、实现过程已完成单目相机标定的情况下:(可以参考http://t.csdnimg.cn/v72VN 虽然是我很久之前写的python的,但实现是没啥问题)需要以下内容:1、已知相机的内参矩阵camera

cv2.error: OpenCV(4.6.0) :-1: error

cv2.error:OpenCV(4.6.0):-1:error:(-5:Badargument)infunction'imwrite'>Overloadresolutionfailed:>-imgisnotanumpyarray,neitherascalar>-ExpectedPtrforargument'img'cv2.imwrite('D:/pic/stronger','\expansion.jpg',mask_OTSU)报错的程序是上面那行,错误原因是第一个逗号,删掉逗号就可以了

c++ - 使用 OpenCV 描述符匹配 findFundamentalMat

我早些时候发布了关于同一程序的问题,但没有收到任何答复。我已经纠正了我当时遇到的问题,结果却遇到了一个新问题。基本上,我使用未校准的方法自动校正旋转和平移的立体图像对。我使用SURF等特征检测算法在两幅图像(左右立体图像对)中找到点,然后再次使用SURF匹配两幅图像之间的点。然后我需要使用这些匹配点来找到我可以用来校正图像的基本矩阵。我的问题是这样的。我的匹配点存储在描述符匹配的单个vector中,然后过滤异常值。findFundamentalMat将两个独立的匹配点数组作为输入。我不知道如何将vector转换为两个单独的数组。coutfilteredMatches;crossChec

c++ - 如何在 OpenCv 中从太空天空检测太阳?

我需要从太空天空探测太阳。这些是输入图像的例子:经过形态学过滤(open操作两次)我得到了这样的结果这里是这个处理的算法代码://ColortoGraycvCvtColor(image,gray,CV_RGB2GRAY);//colorthresholdcvThreshold(gray,gray,150,255,CV_THRESH_BINARY);//Morphologicopenfor2timescvMorphologyEx(gray,dst,NULL,CV_SHAPE_RECT,CV_MOP_OPEN,2);这么简单的任务处理起来会不会太繁重了?以及如何找到太阳的中心?如果我找到白

Opencv-C++笔记 (13) : opencv-图像卷积一(均值、中值、高斯、双边滤波)与 边缘处理

文章目录一、概述图像滤波1.1、均值滤波1.2中值滤波1.3、高斯滤波1.4、双边滤波1.5、方框滤波二、自定义掩码三、边缘处理四、Sobel算子五、Scharr算子六、拉普拉斯算子十、Canny算法一、概述图像滤波头文件quick_opencv.h:声明类与公共函数#pragmaonce#includeusingnamespacecv;classQuickDemo{public: ... voidblur_Demo(Mat&image); voidmedianblur_Demo(Mat&image); voidgaussian_Demo(Mat&image); voidbilateralFi

c++ - 可以使用 OpenCV 函数 cvtColor 就地转换矩阵吗?

OpenCV函数cvtColor转换矩阵的颜色空间(例如从RGB到灰度)。该函数的C++签名是voidcvtColor(InputArraysrc,OutputArraydst,intcode,intdstCn=0)是否可以使用此函数就地转换矩阵,即使用src与dst相同的对象?cv::Matmat=getColorImage();cvtColor(mat,mat,CV_RGB2GRAY);(我知道无论哪种方式,由于目的地的channel数量与来源不同,它仍需要为目的地分配一个新的内存块。)更一般地说,OpenCVAPI中是否有约定来确定何时可以以这种方式使用函数?

c++ - cv::TermCriteria 如何在 opencv 中工作?

我想使用opencv函数cv::cornerSubPix()因为我需要另一个函数,cv::TermCriteria我的问题是关于的最后一个参数这个功能:cv::TermCriteria(cv::TermCriteria::MAX_ITER+cv::TermCriteria::EPS,50,//maxnumberofiterations0.0001));//minaccuracy这里的最小准确度是什么意思? 最佳答案 TermCriteria的结构是TermCriteria(inttype,//CV_TERMCRIT_ITER,CV_

c++ - OpenCV 2.42 特征检测器 FREAK

我想尝试OpenCV2.4.2中的新类FREAK。我尝试使用特征检测器的通用接口(interface)来构造FREAK,但是,当然,它不起作用。我应该如何修改我的代码以获得结果?#include#include#include#include#include#include#includeusingnamespacestd;usingnamespacecv;intmain(){Matmat1;mat1=imread("Testimg06.jpg",0);vectorP1;Ptrfreakdes;PtrdescriptorExtractor;freakdes=FeatureDetecto

UDP/TCP和OpenCV的实时视频传输(On Linux)

1.UDP传输视频client.cpp#include//Linux系统下网络通讯的头文件集合#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacecv;usingnamespacestd;enum{ PORT=8888};intmain(intargc,char**argv){ intm_sockClient; if((m_sockC