Tag: opencv

无法在OpenCV中检测到网络摄像头

嗨我正在尝试使用以下代码检测opencv中的网络摄像头我得到了空白的黑屏虽然我的网络摄像头通过usb连接到我的电脑 我的网络摄像头正在使用** ICatch(VI)PC Camera **驱动程序和我在VS 2008中使用OpenCV 2.1 #include “cv.h” #include “highgui.h” int main( int argc, char** argv ) { cvNamedWindow( “cam”, CV_WINDOW_AUTOSIZE ); CvCapture* capture; if (argc==1) { capture = cvCreateCameraCapture( 0 ); } else { capture = cvCreateFileCapture( argv[1] ); } assert( capture != NULL ); IplImage* frame; while(1) { frame = cvQueryFrame( capture […]

为什么Findcv中的FindContours函数在下面的图像中找到两个轮廓而不是一个?

输入图像 – http://sofzh.miximages.com/c/sLoqh.png带凸轮廓的输出图像 – http://sofzh.miximages.com/c/AaNJY.png 如何获得一个轮廓的任何帮助将非常感激?

OpenCV argc和argv混淆

我正在检查一些OpenCV教程并在开头找到这一行(这里是链接,代码在CalcHist部分下面http://opencv.willowgarage.com/documentation/c/histograms.html ) if (argc == 2 && (src = cvLoadImage(argv[1], 1)) != 0) 我以前从未见过这个,真的不明白。 我检查了一些有关此主题的问答,但仍然不理解。 有人可以向我解释这条线的含义是什么? 谢谢!

球碰撞检测

我试图检测白球最初接触的颜色球。 所有球的坐标和颜色都是已知的,并且球的video输入将是顶视图,因此只有xy中的坐标 我检测到的球的代码如下 *//draw all detected circles for (int i = 0; i total; i++) { // round the floats to an int float* p = (float*)cvGetSeqElem(circles, i); cv::Point center(cvRound(p[0]), cvRound(p[1])); int radius = cvRound(p[2]); //uchar* ptr; //ptr = cvPtr2D(img, center.y, center.x, NULL); //printf(“B: %d G: %d R: %d\n”, ptr[0],ptr[1],ptr[2]); CvScalar s; s = cvGet2D(img,center.y, […]

我的Opencv应用程序处理速度非常慢

我正在构建一个OpenCV应用程序,它可以从相机中捕获video,并在删除背景后将其覆盖在另一个video上。 我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps。 有没有办法以正常速度显示背景video并以3fps覆盖已处理的video? 我试着评论我的代码,我意识到问题主要在于渲染部分本身。 我尝试显示video和我的网络摄像头,我注意到用openCV显示的实际fps和video的fps有所下降。 这是示例代码: void main() { CvCapture* capture, *Vcap; capture = cvCaptureFromCAM(0); if(!capture) { printf(“Video Load Error”); } Vcap = cvCaptureFromAVI(“bgDemo.mp4”); //printf(“\nEntered BGR”); if(!Vcap) { printf(“Video Load Error”); } while(1) { IplImage* src = cvQueryFrame(Vcap); if(!src) { Vcap = cvCaptureFromAVI(“bgDemo.mp4”); continue; } IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3); cvResize(src,bck1,CV_INTER_LINEAR); cvShowImage(“BCK”,bck1); cvWaitKey(1); } }

OpenCV:cvHoughCircles使用中出错

我使用cvHoughCircles在下图中找到两个白色椭圆: 我首先使用阈值来定位白色区域,然后使用霍夫变换。 但输出结果不正确,如下所示: 我无法理解发生了什么? 为什么它检测到3个圆圈以及为什么只有一个被正确检测? 有什么建议? 以下是我的代码: #include “opencv2/highgui/highgui.hpp” #include “opencv2/imgproc/imgproc.hpp” #include #include #include #include #include #include “opencv/cv.h” #include “opencv/highgui.h” #include #include using namespace cv; using namespace std; int main( ) { IplImage* image = cvLoadImage( “testing.bmp”, CV_LOAD_IMAGE_GRAYSCALE ); IplImage* src = cvLoadImage(“testing.bmp”); CvMemStorage* storage = cvCreateMemStorage(0); cvThreshold( src, src, 200, 255, CV_THRESH_BINARY ); CvSeq* […]

OpenCV:用C ++和C乘以图像

我刚刚使用了C api(cvMul)和C ++ api(mul和multiply)的乘法函数。 但是我从C函数和C ++函数得到了不同的结果 cvMul的结果 (白色图像) mul和multiply的结果 这是我用于两种实现的代码: C IplImage * gh = cvCreateImage(cvGetSize(input),IPL_DEPTH_32F,1) ; cvSobel(input,gh,1,0) ; IplImage * gh2 = cvCreateImage(cvGetSize(input),IPL_DEPTH_32F,1) ; cvMul(gh,gh,gh2) ; C ++ Mat gh = Mat (input.size(), CV_32FC1); Sobel(input, gh, CV_32FC1, 1, 0); Mat gh2 = Mat (input.size(), CV_32FC1); gh2 = gh.mul(gh); // multiply (gh, gh, gh2); 输入图像是相同的,当我检查水平渐变时,它们对于两种实现也是相同的,那么为什么乘法会得到不同的结果呢? […]

在C中使用cvCalibrateCamera2

我已经尝试了cvCalibrateCamera2的每个可能的实现,但我一直遇到这个错误: 函数’cvCalibrateCamera2’的参数太少 我正在从这里开始解决这个问题 ,我总是遇到同样的错误。 系统:Ubuntu 16.04 | 编程语言:C( 坚持C对我来说至关重要 )| gcc版本:5.4 的CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project(main) set(CMAKE_BUILD_TYPE Debug) find_package( OpenCV REQUIRED ) set(SOURCE_FILES main.c) # Executable add_executable( ${PROJECT_NAME} ${SOURCE_FILES} ) target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS} ) add_definitions(-O4 -g) 任何输入都非常感谢。 谢谢。 供参考,整个代码: #include #include “opencv2/highgui/highgui_c.h” #include “opencv2/imgproc/imgproc_c.h” #include “opencv2/calib3d/calib3d_c.h” #include “opencv2/videoio/videoio_c.h” #include int main(){ int n_boards = 0; int […]

使用OpenCV从相机捕获灰色屏幕

我从网络摄像头捕获图像时出现问题(内置于hp dv5)。 唯一的结果是灰屏。 这是代码: #include “StdAfx.h” #include “cv.h” #include “highgui.h” #include // A Simple Camera Capture Framework int main() { CvCapture* capture; for (int i = -1;i < 100;i++) { capture = cvCaptureFromCAM( i ); if( !capture ) { fprintf( stderr, "ERROR: capture is NULL \n" ); } else { break; } } //cvSetCaptureProperty( capture, […]

在opencv中找到凸性缺陷?

我有一个程序来计算图像的凸包。 我正在尝试使用此信息来计算输入图像中存在的手指数量。 从一些冲浪我发现这样做(计数手指)的方法是 寻找轮廓 凸壳 凸性缺陷 但是我在使用凸性缺陷函数时遇到了麻烦。 编译很好,但在运行时程序崩溃与某些输入图像,但没有其他人,我似乎无法弄清楚为什么。 这些是输入图像 此图像导致崩溃 但事实并非如此。 即使它与上面类似, 这也会导致崩溃 码.. #include #include #include #include #define CVX_RED CV_RGB(0xff,0x00,0x00) #define CVX_GREEN CV_RGB(0x00,0xff,0x00) #define CVX_BLUE CV_RGB(0x00,0x00,0xff) int main(int argc, char* argv[]) { cvNamedWindow( “original”, 1 ); cvNamedWindow( “contours”, 1 ); cvNamedWindow( “hull”, 1 ); IplImage* original_img = NULL; original_img = cvLoadImage(“img.jpg”, CV_LOAD_IMAGE_GRAYSCALE ); IplImage* […]