Tag: opencv

cvQueryFrame是否预先为帧提供缓冲区?

如果我做: while(1) { //retrieve image from the camera webCamImage=cvQueryFrame(camera) // where ‘camera’ is cvCreateCameraCapture(0) //do some heavy processing on the image that may take around half a second funcA() } 现在,当我进行连续迭代时,似乎webCamImage落后了! 即使我移动相机,webCamImage也需要很长时间才能更新到新的视野,并且它会一直显示和处理以前的视野相机帧。 我假设cvQuery有一些缓冲区来检索帧。 你能告诉我如何在每次迭代时获得更新的摄像机视图吗? 非常感谢

如何在OpenCV中获得单独的轮廓(并填充它们)?

我试图分离图像的轮廓(为了找到统一的区域),所以我应用了cvCanny然后cvFindContours,然后我每次按一个键时使用以下代码绘制1个轮廓: for( ; contours2 != 0; contours2 = contours2->h_next ){ cvSet(img6, cvScalar(0,0,0)); CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 ); cvDrawContours(img6, contours2, color, cvScalarAll(255), 100); //cvFillConvexPoly(img6,(CvPoint *)contours2,sizeof (contours2),color); area=cvContourArea(contours2); cvShowImage(“3″,img6); printf(” %d”, area); cvWaitKey(); } 但是在第一次迭代中它绘制了所有轮廓,在第二次迭代中它绘制了除了一个之外的所有轮廓,第三次绘制除了两个之外的所有轮廓,依此类推。 如果我使用cvFillConvexPoly函数,它会填充大部分屏幕(尽管我写的这个我意识到凸多边形对我来说不起作用,我需要只填充轮廓内部) 那么,我怎样才能在for的每次迭代中只取一个轮廓,而不是所有剩余的轮廓? 谢谢。

你能用cvCalibrateCamera2找到两个摄像头之间的外在关系吗?

我想知道使用cvCalibrateCamera2找到两台摄像机之间的旋转和平移的可能性是cvCalibrateCamera2 。 例如,您刚刚完成棋盘校准的场景,其中棋盘可以在两个图像平面上查看。 如果我然后从一个摄像机传递这些点作为object_points ,而将另一个摄像机的点image_points为image_points ,这会给我两个视图之间的旋转和平移吗? 此外,这会吐出几个旋转矩阵和平移向量。 我会用哪一个?

如何在Visual C ++ 2010或2008中使用OpenCV 2.1访问ip camera(compro IP50W)

CvCapture* cam = cvCaptureFromFile(“http:\\192.168.0.77”); IplImage* img; img = cvQueryFrame(cam); IplImage* current = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); IplImage* comResult = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); double cam_w = cvGetCaptureProperty(cam, CV_CAP_PROP_FRAME_WIDTH); double cam_h = cvGetCaptureProperty(cam, CV_CAP_PROP_FRAME_HEIGHT); double fps = 10;

OpenCV中的肤色检测

我试图在Opencv中进行肤色检测。 1)首先我将图像从RGB转换为HSV cvCvtColor(frame, hsv, CV_BGR2HSV); 2)比我在HSV图像中应用了肤色阈值 cvInRangeS(hsv, hsv_min, hsv_max, mask); // hsv_min & hsv_max are the value for skin detection 3)因此它生成仅具有肤色但在黑白图像中的混搭,因此我将该图像转换为RGB cvCvtColor(mask, temp, CV_GRAY2RGB); 4)所以现在我想要只有RGB值的肤色。 for(c = 0; c height; c++) { uchar* ptr = (uchar*) ((frame->imageData) + (c * frame->widthStep)); uchar* ptr2 = (uchar*) ((temp->imageData) + (c * temp->widthStep)); for(d = 0; d width; […]

OpenCV(C):计算轮廓的力矩

这是我的代码: #include “highgui.h” #include “cv.h” #include // this code finds contours int main (int argc, char* argv[]) { cvNamedWindow( argv[0], 1 ); IplImage* img_8uc1 = cvLoadImage( argv[1], CV_LOAD_IMAGE_GRAYSCALE ); IplImage* img_edge = cvCreateImage( cvGetSize(img_8uc1), 8, 1); IplImage* img_8uc3 = cvCreateImage( cvGetSize(img_8uc1), 8, 3); cvThreshold( img_8uc1, img_edge, 128, 255, CV_THRESH_BINARY ); CvMemStorage* storage = cvCreateMemStorage(); CvSeq* […]

使用Qt Creator GUI来播放video

frame = cvQueryFrame(camera); while(key!=’q’){ cvNamedWindow( “main”,CV_WINDOW_AUTOSIZE); cvShowImage(“main”, frame); if(frame!=NULL){ drawSquares( frame, findSquares4( frame, storage ) ); /* wait for key. Also the function cvWaitKey takes care of event processing */ key = cvWaitKey(33); IplImage *img = cvCloneImage(frame); if (img->origin){ cvFlip(img); img->origin= 0; } QImage* qimg = IplImageToQImage(img) // qimg = IplImage2QImage (img); QLabel label; ui->label->setPixmap(QPixmap::fromImage(qimg)); […]

在OpenCV中创建XML文件

我创建了一个XML文件,但是当我尝试读取它时,我收到有关重复键的错误。 当我打开XML文件时,我注意到没有嵌套的东西,所有东西都被视为它自己的个别节点。 我想知道是否有办法正确创建XML文件并能够解析它。 下面我已经包含了用于编写XML文件的代码,我的XML输出以及我希望它的内容。 XML代码: // Open up the file so that we can write to it cv::FileStorage fs; fs.open(szFileName, cv::FileStorage::WRITE); // Check if we actually created the file if(fs.isOpened()) { fs << "Total_Images" << (int)vImages.size(); //cv::write(fs, "Total Images", (int)vImages.size()); for(int i = 0; i < (int)vImages.size(); i++) { char szSize[8]; string szNode; szNode = […]

无法链接到OpenCV的共享库(Linux)

线下面写的问题已经解决,但我面临一个新的相关问题。 与以前略有不同,我正在编译和链接示例OpenCV代码: g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -lcv -lcxcore -lcvaux -lml -lhighgui 这不会给出任何错误,但是当我使用运行可执行文件时 ./facedetection 我收到此错误: ./facedetection: error while loading shared libraries: libcv.so.2.0: cannot open shared object file: No such file or directory 当我进行符号链接时,使用: ln -s libcv.so libcv.so.2.0 然后错误是: ln: failed to create symbolic link ‘libcv.so.2.0’: File exists 不知道怎么解决这个问题。 提前致谢.. IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 我正在尝试创建一个示例OpenCV程序的linux可执行文件,该程序将与.so文件动态链接,并将在未安装OpenCV的机器上执行,但.so文件将出现在该linux机器上。 我已经搜索了许多关于此的post,但仍然没有成功。 我像这样编译opencv: […]

在C中使用openCV的2D卷积

我想实现一个使用openCV执行2D卷积的程序。 我是openCV的新手。 我天真的实现在这里: #include #include //used for kernel unsigned short int kernel[3][3] __attribute__(( aligned(32))); // input and output image unsigned short int input[512][512] __attribute__(( aligned(32))); unsigned short int output[512][512] __attribute__((aligned(32))); int main() { //data are assigned to input and kernel matrices before. const CvArr* src = input; CvArr* dst = output; const CvMat* kernel = […]