#include "opencv2/highgui/highgui.hpp" int main( int argc, char** argv ) { cvNamedWindow( "Example", 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 ); if( !frame ) break; // 对取到的图像做处理 unsigned int W, H; unsigned int row, col; unsigned long i; unsigned int max_row; unsigned int max_col; unsigned char max_val = 0; const double gain = 0.000795302; const double offset = 0.0053867; const double h_cm = 7.350; // 我的摄像头和激光头距离7.35cm double range; unsigned int pixels_from_center; W = frame->width; H = frame->height; unsigned char *img_d = (unsigned char *)frame->imageData; // 假设激光点是最亮点,最简单的实现,一般来说确实是这样,但是在背景干扰大的情况下会误判,还有很大的提高空间 for (row = 0; row < H; row++) { for (col = 0; col < W; col++) { i = (unsigned long)(row*3*W + 3*col); if (*(img_d + i) >= max_val) { max_val = *(img_d + i); max_row = row; max_col = col; } } } max_val = 0; (责任编辑:admin) |