草庐IT

ctypes-opencv

全部标签

c++ - OpenCV 中的局部归一化

我正在尝试在OpenCV中实现局部归一化算法以减少图像中的光照差异。我找到了MATLABfunction,我已经在OpenCV中实现了它。但是,我得到的结果与MATLAB函数给出的结果不同。这是我的代码:MatlocalNorm(Matimage,floatsigma1,floatsigma2){MatfloatGray,blurred1,blurred2,temp1,temp2,res;image.convertTo(floatGray,CV_32FC1);floatGray=floatGray/255.0;intblur1=2*ceil(-NormInv(0.05,0,sigma1

houghcircles在OpenCV中无法正确检测到圆

我正在使用VisualStudio2015,OpenCv.3和Emgucv.3。我的代码在下面表示,结果显示在图片中。我知道问题是Houghcircles功能的输入值,但我不知道哪些输入适合此图片。感谢任何帮助。ImageOriginalImage=newImage(Openfile.FileName);ImageResizedImage=OriginalImage.Resize(OriginalImage.Width/2,OriginalImage.Height/2,Emgu.CV.CvEnum.Inter.Cubic);//**********ConvertImagetoBinaryIma

c++ - OpenCV 2.2 SURF 特征匹配问题

我修改了OpenCV演示应用程序“matching_to_many_images.cpp”以从网络摄像头(右)查询图像(左)到帧。第一张图片的右上角出了什么问题?我们认为这与我们遇到的另一个问题有关。我们从一个空数据库开始,我们只添加独特的(与我们数据库中的特征不匹配的特征)但是在只添加三个特征之后,我们得到了所有新特征的匹配....我们正在使用:SurfFeatureDetectorsurfFeatureDetector(400,3,4);冲浪描述符提取器冲浪描述符提取器;FlannBasedMatcherflannDescriptorMatcher;完整代码可在以下位置找到:htt

c++ - Opencv 2.4.2代码详解-人脸识别

引用OpenCV提供的文档做了一个人脸识别程序,可以识别多张人脸,运行正常。在文档中,他们制作了省略号以突出显示脸部。我不明白的是他们如何计算椭圆的中心,他们计算如下for(inti=0;i他们使用的人脸vector生成如下face_cascade.detectMultiScale(frame_gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,cv::Size(30,30))文档即程序在链接中给出http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifi

c++ - 在框架上用opencv绘制一个矩形

我有一个框架,想在特定位置绘制一个矩形,该矩形具有:#include"opencv2/opencv.hpp"#include#include#includeintmain(){cv::Matframe=cv::imread("cmd.png");cvRectangle(&frame,cvPoint(5,10),cvPoint(20,30),cvScalar(255,255,255));cv::imshow("test",frame);while(cv::waitKey()!=23);return1;}我运行代码时出现内存错误。Unhandledexceptionat0x000007fe

c++ - 使用 OpenCV 计算黑色像素

我正在使用opencv2.4.0和C++我正在尝试做一个练习,说我应该加载RGB图像,将其转换为灰度并保存新图像。下一步是将灰度图像转换为二值图像并存储该图像。我有这么多工作。我的问题是计算二值图像中黑色像素的数量。到目前为止,我已经在网上搜索过,也看过这本书。我发现最有用的方法是。intTotalNumberOfPixels=width*height;intZeroPixels=TotalNumberOfPixels-cvCountNonZero(cv_image);但我不知道如何存储这些值并在cvCountNonZero()中使用它们。当我将我想要计数的图像传递给此函数时,出现错误

c++ - opencv中黑色物体检测HSV范围

黑色物体检测的范围是多少?我试过下面的代码cvInRangeS(imgHSV,cvScalar(0,0,0,0),cvScalar(0,255,255,0),imgThreshold);但它不起作用。 最佳答案 对于HSV范围内的黑白颜色,您必须将色调设置为最大范围(0到180),将饱和度设置为最大范围(0到255)。您可以使用该值,例如,黑色为0到30或40,白色为200到255。//forblackcvInRangeS(imgHSV,cvScalar(0,0,0,0),cvScalar(180,255,30,0),imgThre

c++ - 带掩码的 OpenCV 阈值

我正在尝试使用OpenCV的cv::threshold函数(更具体的THRESH_OTSU),只是我想使用掩码(任何形状)),以便在计算过程中忽略外部(背景)。图像是单channel的(这是必须的),下面的红色仅用于标记图像上的示例多边形。我尝试使用adaptiveThreshold,但有几个问题使它不适合我的情况。 最佳答案 通常,您可以简单地使用cv::threshold计算阈值,然后使用倒置的方法将src图像复制到dst掩码。//Applycv::thresholdonallimagethresh=cv::threshold(

opencv特征匹配算法原理

文章目录一、ORB算法原理1.特征点提取2.特征点编码3.opencv实现4.算法优缺点二、SIFT算法原理1.特征点提取2.特征点描述3.算法优缺点三、SURF算法原理1.特征点提取2.特征点描述3.算法优缺点一、ORB算法原理 全名OrientedFASTandRotatedBRIEF算法,是指它基于FAST算法提取特征点,并基于BRIEF算法构建特征点的描述子,在他们原有的基础上进行修正,实现特征点的尺度不变性与旋转不变性,即经过了缩放与旋转后的特征点仍能产生与原来相近的描述符。算法步骤:1.特征点提取FAST进行特征点提取是根据当前点领域内的点的差值作为特征点的筛选标准(1)选择像素p

c++ - 如何将QImage转换为opencv Mat

我在互联网上搜索过,但找不到将QImage(或QPixmap)转换为OpenCVMat的方法。我该怎么做?感谢任何帮助。 最佳答案 如果QImage仍然存在,并且您只需要对其执行快速操作,那么您可以使用QImage内存构造一个cv::Mat:cv::Matmat(image.height(),image.width(),CV_8UC3,(cv::Scalar*)image.scanLine(0));这里假设QImage是3channel,即RGB888。如果QImage消失,那么您需要复制数据,参见Qimagetocv::Matco