int main(int argc, char *argv[]) { pthread_t thread; /* init threads */ g_thread_init (NULL); gdk_threads_init (); gdk_threads_enter (); gtk_init(&argc, &argv); initApp(); appdata->program = HILDON_PROGRAM(hildon_program_get_instance()); g_set_application_name("Webview"); appdata->window = HILDON_WINDOW(hildon_window_new()); hildon_program_add_window(appdata->program, appdata->window); create_menu(appdata->window); build_interface(appdata->window); /* Connect signal to X in the upper corner */ g_signal_connect(G_OBJECT(appdata->window), "delete_event", G_CALLBACK(destroy), NULL); update_image(); load_settings(); gtk_widget_show_all(GTK_WIDGET(appdata->window)); if(! start_camera(appdata->window)) { g_warning("Unable to start camera\n"); GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Unable to start camera\n"); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); } if(! start_webserver()) { GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Unable to start web server.\nCheck server port is not already in use.\n"); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); } sleep(1); pthread_create(&thread, NULL, count_down_thread, NULL); gtk_main(); gdk_threads_leave (); return( 0 ); }
CalibrationDialog::CalibrationDialog(QWidget *parent, Qt::WindowFlags flags): QDialog(parent, flags), _projector(), _cancel(false), _video_toget(this), _i(0),//可删 timer(),//可删 _success_open_camera(false), _success_read_pattern(false), _patterns_to_corner(), _num_pictrue(0),//第几张拍下的照片,第一张需要剔除 _num_position(0),//一共多少个摆姿 _current_positon(0),//初始化为第一个摆放位置 _sum_pattern_to_corner(0)//存储所有摆放位置的图 { setupUi(this); //_patterns_to_corner.resize(42);//设置容器大小为42 update_screen_combo();//更新所用的屏幕为哪一个,是配置文件保存的,还是所选的 //update projector view _projector.set_screen(screen_combo->currentIndex());//设置要投影在第几屏幕,设置_screen变量的值(索引值:0 or 1 or 2 ...) position_spinBox->setValue(1); //初始化buf对应的image大小;可修改#######这里采集图片的大小是768*576 _buf_image=cv::Mat(576,768,CV_8UC3); //start video preview _success_read_pattern=read_pattern(); _projector.start();//将widget全屏显示,并且根据此时的屏幕设置bit数###################关键 _success_open_camera=start_camera();//开启相机预览#####改写//可删 }
void VideoToGet::run() { _init = false; _stop = false; bool success = start_camera(); _init=true; if (!success) { return; } LPBYTE lpbuf; short height,width; long stride; long no=0; int _is_new_picture; lpbuf=(unsigned char *)okGetTargetInfo(hBoard,BUFFER,no,&width,&height,&stride); //int i=0;ceshi // QTime t; // t.start(); // cv::Mat _buf_image(576,768,CV_8UC3); // int _i=0; while(!_stop) { while(_can_capture) { qDebug()<<"capture"<<timer.currentTime(); _is_new_picture=okCaptureTo(hBoard,BUFFER,0,0);//第四个参数是0;代表连续采集,即是实时采集,无回调支持 if(_is_new_picture>0) { emit new_image(lpbuf); _is_new_picture=0; _can_capture=false; } } } }
static int k4w2_v4l2_start(k4w2_t ctx) { k4w2_v4l2 * v4l2 = (k4w2_v4l2 *)ctx; CHANNEL ch; if (v4l2->thread) return K4W2_ERROR; v4l2->shutdown = 0; if (THREAD_CREATE(&v4l2->thread, k4w2_v4l2_thread_loop, ctx)) { VERBOSE("THREAD_CREATE() failed."); return K4W2_ERROR; } for (ch = ctx->begin; ch <= ctx->end; ++ch) { start_camera(&v4l2->cam[ch]); } return K4W2_SUCCESS; }
void VideoInput::run() { _init = false; _stop = false; bool success = start_camera(); _init = true; if (!success) { return; } int error = 0; int max_error = 10; int warmup = 10000; QTime timer; timer.start(); while(_video_capture && !_stop && error<max_error) { IplImage * frame = cvQueryFrame(_video_capture); if (frame) { //ok error = 0; emit new_image(cv::Mat(frame)); } else { //error if (timer.elapsed()>warmup) {error++;} } } //clean up stop_camera(); QApplication::processEvents(); }
void VideoInput::run() { _init = false; _stop = false; bool success = start_camera(); _init=true; if (!success) { return; } LPBYTE lpbuf; short height,width; long stride; long no=0; int _is_new_picture; lpbuf=(unsigned char *)okGetTargetInfo(hBoard,BUFFER,no,&width,&height,&stride); //int i=0;ceshi // QTime t; // t.start(); // cv::Mat _buf_image(576,768,CV_8UC3); // int _i=0; while(!_stop) { _is_new_picture=okCaptureTo(hBoard,BUFFER,0,0);//第四个参数是0;代表连续采集,即是实时采集,无回调支持 //if(_is_new_picture>0) //QString ii=(QString("[%1]").arg(i)); //QString str="C:/Users/Administrator/Desktop/111/1123"+ii+".jpg"; //LPSTR strc=(char*)str.toStdString().data(); if(_is_new_picture>0) { //okSaveImageFile(hBoard,strc,0,BUFFER,0,1); emit new_image(lpbuf); _is_new_picture=0; //ceshi // _i++; // QString ii=(QString("[%1]").arg(_i)); // QString str="C:/Users/Administrator/Desktop/111/1"+ii+".jpg"; // cv::imwrite(str.toStdString(),_buf_image);//写文件耗时45ms // int bufnum=0; // int row_num=_buf_image.rows; // int col_num=_buf_image.cols*_buf_image.channels();//此循环耗时6-7ms // for(int j=0;j<row_num;j++){ // unsigned char * data = _buf_image.ptr<uchar>(j); // for(int i=0;i<col_num;i++){ // data[i]=*(lpbuf+bufnum); // bufnum++; // } // } //cv::imwrite(str.toStdString(),_buf_image);//写文件耗时45ms // i++; } //qDebug()<<lpbuf; //qDebug( "%d\n", t.elapsed() ); } //qDebug( "%d\n", t.elapsed() ); }
//int main(int argc,char *argv[]) int server_socket_init(void) { struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT); int client_sockfd =0; int on = 1; int need_connect = 1; int size; char buffer[MAX_BUFFER + 1]; struct sockaddr_in client_addr; socklen_t len = sizeof(client_addr); //reigster ctrl+c /ctrl+z signal. signal(SIGINT, signalHandler); signal(SIGTSTP, signalHandler); server_sockfd = socket(AF_INET, SOCK_STREAM, 0); if((setsockopt(server_sockfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on))) < 0) { perror("setsockopt failed"); exit(EXIT_FAILURE); } bind(server_sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); /* listen */ listen(server_sockfd, 5); #ifndef UBUNTU_HOST mini_car_gpio_init(); #endif while(1) { if(need_connect) { printf("waiting connection...\n"); client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &len); need_connect = 0; printf("connect client ok!\n"); start_camera(); } memset(buffer, 0, MAX_BUFFER); size = read(client_sockfd, buffer, 4); // printf("Got %d bytes: %s\n", size, buffer); if(size == 0) { continue; } do_action(buffer, NULL); if(atoi(buffer) == MSG_STOP) { printf("disconnect client !\n"); close(client_sockfd); client_sockfd = 0; need_connect = 1; //send_signal_to_proc(SIGINT, "mjpg_streamer"); } } close(server_sockfd); return 0; }