haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 工具仪表 > 仪器仪表 >

自制简易激光测距仪(2)

#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)
haoDIY创好电子 版权所有,电话微信13977534587