Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 找到形状和颜色圆_Opencv - Fatal编程技术网

Opencv 找到形状和颜色圆

Opencv 找到形状和颜色圆,opencv,Opencv,我只检测到了所有的红色轮廓,正在努力寻找一种方法,在这些轮廓上运行一个形状检测算法,只得到红色的圆圈,但不知道如何只提取红色的圆圈,并消除不需要的其余轮廓?源代码: #include "stdafx.h" #include"math.h" #include"conio.h" #include"cv.h" #include"highgui.h" #include"stdio.h" #include <math.h> int main() { int i,j,k; in

我只检测到了所有的红色轮廓,正在努力寻找一种方法,在这些轮廓上运行一个形状检测算法,只得到红色的圆圈,但不知道如何只提取红色的圆圈,并消除不需要的其余轮廓?源代码:

#include "stdafx.h"
#include"math.h"
#include"conio.h"
#include"cv.h"
#include"highgui.h"
#include"stdio.h"
#include <math.h>

int main()
{
    int i,j,k;
    int h,w,seuill,channels;
    int seuilr, channelsr;
    int temp=0;
    uchar *data,*datar;
    i=j=k=0;
    IplImage *frame=cvLoadImage("Mon_image.jpg",1);
    IplImage *result=cvCreateImage( cvGetSize(frame), IPL_DEPTH_8U, 1 );
    IplImage *gray=cvCreateImage( cvGetSize(frame), IPL_DEPTH_8U, 1 );
    cvCvtColor(frame, result, CV_BGR2GRAY );

    //IplImage* gray;
    cvNamedWindow("original",CV_WINDOW_AUTOSIZE);
    cvNamedWindow("Result",CV_WINDOW_AUTOSIZE);

    h = frame->height;
    w = frame->width;
    seuill =frame->widthStep;
    channels = frame->nChannels;
    data = (uchar *)frame->imageData;


    seuilr=result->widthStep;
    channelsr=result->nChannels;
    datar = (uchar *)result->imageData;

   for(i=0;i < (h);i++) 
    for(j=0;j <(w);j++)
{     
if(((data[i*seuill+j*channels+2]) >(19+data[i*seuill+j*channels]))&& ((data[i*seuill+j*channels+2]) > (19+data[i*seuill+j*channels+1])))

            datar[i*seuilr+j*channelsr]=255;

else
    datar[i*seuilr+j*channelsr]=0;
}       

         cvCanny(result,result, 50, 100, 3);
          CvMemStorage* storage = cvCreateMemStorage(0);
         CvSeq* circles = cvHoughCircles(result, storage, CV_HOUGH_GRADIENT, 1, 40.0, 100, 100,0,0);

    cvShowImage("original",frame);
    cvShowImage("Result",result);
    cvSaveImage("result.jpg",result);
    cvWaitKey(0);
    cvDestroyWindow("original");
    cvDestroyWindow("Result");
return 0;
}
#包括“stdafx.h”
#包括“math.h”
#包括“conio.h”
#包括“cv.h”
#包括“highgui.h”
#包括“stdio.h”
#包括
int main()
{
int i,j,k;
int h、w、seuill、通道;
国际海洋研究所,海峡研究所;
内部温度=0;
uchar*数据,*数据;
i=j=k=0;
IplImage*frame=cvLoadImage(“Mon_image.jpg”,1);
IplImage*结果=cvCreateImage(cvGetSize(帧),IPL_深度_8U,1);
IplImage*gray=cvCreateImage(cvGetSize(帧),IPL_深度_8U,1);
CVT颜色(帧、结果、CV_bgr2灰色);
//IplImage*灰色;
cvNamedWindow(“原始”,CV_窗口_自动调整大小);
cvNamedWindow(“结果”,CV_窗口_自动调整大小);
h=框架->高度;
w=框架->宽度;
seuill=帧->宽度步长;
通道=帧->通道;
数据=(uchar*)帧->图像数据;
seuilr=结果->宽度步长;
channelsr=结果->n通道;
datar=(uchar*)结果->图像数据;
对于(i=0;i<(h);i++)
对于(j=0;j(19+数据[i*seuill+j*通道])和((数据[i*seuill+j*通道+2])>(19+数据[i*seuill+j*通道+1]))
数据r[i*seuilr+j*channelsr]=255;
其他的
数据r[i*seuilr+j*channelsr]=0;
}       
cvCanny(结果,结果,50,100,3);
CvMemStorage*storage=cvCreateMemStorage(0);
CvSeq*圆=cvHoughCircles(结果、存储、CV_-HOUGH_梯度,1,40.0,100,100,0,0);
cvShowImage(“原始”,框架);
cvShowImage(“结果”,结果);
cvSaveImage(“result.jpg”,result);
cvWaitKey(0);
CVD(原件);
“结果”;
返回0;
}

我宁愿使用RANSAC算法来检测轮廓集中的圆,但Hough变换也可以完成这项工作。
有关这两个过程的说明,请参阅。在matlab中给出解决方案。

共享当前应用程序的输入和输出图像不仅可以提高问题的质量,而且可以获得答案。更好地标记你的问题。所有的C组成员可能都忽略了这个问题,因为它没有被标记为。最可能的重复,重复: