Hcmute nghiên cứu và ứng dụng hệ thống xử lý ảnh thông qua interactive robot

39 1 0
Hcmute nghiên cứu và ứng dụng hệ thống xử lý ảnh thông qua interactive robot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH CƠNG TRÌNH NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG NGHIÊN CỨU VÀ ỨNG DỤNG HỆ THỐNG XỬ LÝ ẢNH THÔNG QUA INTERACTIVE ROBOT MÃ SỐ: SV2012-51 S K C0 Tp Hồ Chí Minh, tháng 11/2012 Luan van BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM ĐỀ TÀI NCKH SINH VIÊN NGHIÊN CỨU VÀ ỨNG DỤNG HỆ THỐNG XỬ LÝ ẢNH THÔNG QUA INTERACTIVE ROBOT MÃ SỐ: SV2012-51 THUỘC NHÓM NGÀNH: KỸ THUẬT GIÁO VIÊN HƯỚNG DẪN: TS NGUYỄN TRƯỜNG THỊNH NGƯỜI CHỦ TRÌ: ĐÀO TRỌNG HIỆP NGƯỜI THAM GIA: NGUYỄN Q LÂM VĂN NGỌC ĐỨC ĐƠN VỊ: KHOA ĐÀO TẠO CHẤT LƯỢNG CAO TP HỒ CHÍ MINH – 11/2012 Luan van NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh LỜI CẢM ƠN Nhóm chúng em xin chân thành cảm ơn PGS.TS Nguyễn Trường Thịnh người tận tình dẫn, khuyến khích động viên chúng em đề tài này.Xin chân thành cảm ơn thầy môn giúp chúng em cách nghiên cứu cách trình bày đề tài nghiên cứu.Chân thành cảm ơn bạn bè lớp Cơ điện tử 09 chia sẻ đóng góp ý kiến để hồn thành đề tài tốt Thành phố Hồ Chí Minh ngày tháng năm 2012 Nhóm SVTH: Đào Trọng Hiệp Văn Ngọc Đức Nguyễn Quí Lâm SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page ii NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh Tóm tắt đề tài Tìm hiểu lịch sử phát triển tình hình phát triển đầu robot có hình dạng cấu trúc gần giống với đầu người giới Sử dụng phần mềm VS2008 thư viện mở OpenCV để nhận diện khuôn mặt người Khi nhận diện mắt robot hướng theo khuôn mặt người giao tiếp, phần mềm nhận biết màu sắc vật thể Chế tạo robot có khả giao tiếp người có hình dạng mặt người Thiết kế, thi cơng: Phần khí Phần mềm điều khiển Phần mềm giao tiếp SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page iii NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh MỤC LỤC trang Trang bìa i Lời cảm ơn ii Tóm tắt đề tài iii Mục lục iv Danh mục hình ảnh v Chương I: Tổng quan I.1 Giới thiệu đề tài I.2 Mục đích đề tài I.3 Nhiệm vụ đề tài I.4 Giới hạn đề tài .4 Chương II: Phương pháp nghiên cứu thiết kế chế tạo II.1 Phần khí .5 II.2 Phần điều khiển II.3 Phần xử lí ảnh 13 Chương III: Kết luận 30 III.1 Kết đạt 30 III.2 Hướng phát triển 32 SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page iv NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh Danh mục hình ảnh Hình 1.1: David McGoren, nhóm nghiên cứu Đại học West England, “Heart Robot” Hình 1.2: Robot ASIMO Hình 1.3: Robot NAO Hình 1.4: Robo Head "Flobi" Hình 1.5: Các robot dạng mặt người Hình 2.1: Toàn phần cấu mắt vẽ SolidWorks2011 Hình 2.2 : Bộ phận mắt Hình 2.3 : Bộ phận mí mắt Hình 2.4: Bộ phận lông mày Hình 2.5: Mối quan hệ độ xộng xung PWM góc quay động RC .7 Hình 2.6: Giải thuật điều khiển động RC Hình 2.7: Phần cứng mạch điều khiển Hình 2.8: Các đặc trưng Haar like 13 Hình 2.9: Đặc trưng Haar like vùng mắt 14 Hình 2.10: Giao diện xử lý ảnh .15 Hình 2.11: Phần mềm nhận diện khuôn mặt .15 Hình 2.12: Histogram 25 Hình 2.13: Histogram ảnh tối 26 Hình 2.13: Histogram ảnh sáng 26 Hình 3.1: Cơ cấu mắt 30 Hình 3.2: Bộ phận miệng 30 Hình 3.3: Khn mặt hồn thiện 31 SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page v NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh CHƯƠNG I: TỔNG QUAN I.1 Giới thiệu đề tài Ngày nay, với phát triển khoa học , đặc biệt lĩnh vực khoa học máy tính, hướng nghiên cứu lĩnh vực trí tuệ nhân tạo, điều khiển thơng minh, thị giác máy tính robot sau chế tạo robot thông thinh đạt nhiều thành tựu rực rỡ Không phát triển giới, mà Việt Nam việc chế tạo robot thơng minh có bước phát triển vững Với hướng nghiên cứu này, việc tạo cảm xúc cho robot thông minh nhiều hãng sản xuất robot áp dụng chế tạo thành công mẫu robot thơng minh có khả biểu lộ trạng thái cảm xúc thơng qua phận khuôn mặt đôi mắt, lông mày, miệng… hay màu sắc da má nhịp đập trái tim Robot cảm xúc phát triển từ nhiều năm trước kỉ nguyên robot cảm xúc báo hiệu vào ngày cuối tháng năm 2008, triển lãm nhằm giới thiệu giới robot Bảo tàng khoa học Anh, bật triển lãm Heart Robot nhà khoa học Đại học West England Briston Anh sáng tạo với mục đích khám phá cách người phản ứng với điều xung quanh Heart Robot có tầm vóc đứa bé với trái tim biết đập, bụng hô hấp phận cảm biến cảm nhận phản ứng trước cử động, âm tiếp xúc, tức biết thể "cảm xúc" tùy theo cách đối xử người đối diện Hình 1.1: David McGoren, nhóm nghiên cứu Đại học West England, “Heart Robot” SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh Nếu ơm ấp vỗ về, bày tỏ cảm động với tứ chi mềm ra, mi mắt hạ xuống, thở nhẹ tim đập chậm lại Nhưng tỏ giận dữ, giật mạnh hay la mắng, Heart Robot trở nên khó chịu, bàn tay nắm chặt, thở nhịp tim nhanh hơn, mắt mở to Và kỉ nguyên robot cảm xúc phát triển vượt bậc với sản phẩm nối tiếng toàn cầu EMIEW2 hãng Hitachi, ASIMO hãng Honda thuộc Nhật Bản, robot NAO hãng Aldebaran Robotics (Pháp) hay Robo Head "FLOBI" hãng The Bielefeld Anthropomorphic (Đức) Hình 1.2: Robot ASIMO Hình 1.3: Robot NAO SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh Hình 1.4: Robo Head "Flobi" Việc ứng dụng hệ thống xử lý ảnh vào Interactive Robot (IR) tạo robot có khả tương tác với người đối diện thông qua camera phận nhận diện âm Hình 1.5: Các robot dạng mặt người.Từ trái qua phải, từ xuống dưới: WE-4RII, Nexi, iCub, BATHOC, Karlsruhe Humanoid Head SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh I.2 Mục đích đề tài Khi định chế tạo IR, nhóm hi vọng robot tạo bước phát triển việc giao tiếp người máy móc, đối phương hiểu ta nghĩ gì, làm thành công việc giao tiếp -Với việc giao tiếp tốt với người IR sử dụng tiếp viên hiếu khách nơi nhà hàng, khách sạn, hay chí nơi cơng cộng bệnh viện, sân bay, ga tàu hỏa… -IR sử dụng trường học để giúp cho học sinh hiểu rõ thay đổi phận khuôn mặt cảm xúc thay đổi -IR người bạn tuyệt vời với có đời sống nội tâm, giao tiếp với người, IR bạn trò chuyện giúp bạn có phút giây tâm thoải mái cởi mở, điều làm bạn xua tan mệt mỏi sau ngày làm việc mệt mỏi I.3 Nhiệm vụ đề tài Với đề tài này, nhóm chúng em phải giúp cho IR có khung đầu vững chuyển động khớp phải đảm bảo dễ dàng linh hoạt -Các phận IR phải thiết kế để giống một khuôn mặt người với phận vịm đầu, lơng mày, mắt, mí mắt, má, miệng, hàm… -Với webcame giúp xử lý hình ảnh, IR có khả nhận biết khn mặt người hướng mắt theo đối tượng giao tiếp, tiếp IR biểu lộ cảm xúc với hình ảnh mặc định sẵn Robot có khả nhận biết màu sắc vật I.4 Giới hạn đề tài Với nhiệm vụ nhóm định giới hạn đề tài mức chế tạo phần đầu từ hàm miệng trở lên, nhiên thời gian chưa cho phép khơng có cấu chuyển động, nên phận đơi tai nhóm chưa tiến hành chế tạo -Do robot dạng mặt người nên phận da mặt quan trọng, nhiên nhóm chưa tìm vật liệu thích hợp cách tương tác với phận khác nên phận da mặt IR chưa có -Cùng với đôi mắt đôi lông mày, đôi môi phận giúp ta biết cảm xúc cách rõ ràng nhất, nhiên việc chế tạo đôi môi phức tạp chuyển động đôi môi chuyện động khó làm nên đơi mơi chưa nhóm giải -Ngồi thiếu sót IR gần đầy đủ phận khuôn mặt người đôi mắt, đôi lông mày, lông mi,mũi, miệng…Với phận này, IR cảm xúc người cách tương đối SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh { this->components = (gcnew System::ComponentModel::Container()); this->button2 = (gcnew System::Windows::Forms::Button()); this->timer1 = (gcnew System::Windows::Forms::Timer(this>components)); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->textBox2 = (gcnew System::Windows::Forms::TextBox()); this->label1 = (gcnew System::Windows::Forms::Label()); this->label2 = (gcnew System::Windows::Forms::Label()); this->sp = (gcnew System::IO::Ports::SerialPort(this>components)); this->button1 = (gcnew System::Windows::Forms::Button()); this->button3 = (gcnew System::Windows::Forms::Button()); this->cb = (gcnew System::Windows::Forms::ComboBox()); this->button4 = (gcnew System::Windows::Forms::Button()); this->timer2 = (gcnew System::Windows::Forms::Timer(this>components)); this->SuspendLayout(); // // button2 // this->button2->Location = System::Drawing::Point(336, 34); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(75, 23); this->button2->TabIndex = 1; this->button2->Text = L"Exit"; this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click); // // timer1 // this->timer1->Enabled = true; this->timer1->Interval = 20; this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick); // // textBox1 // SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 19 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh this->textBox1->Location = System::Drawing::Point(133, 73); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(100, 20); this->textBox1->TabIndex = 2; // // textBox2 // this->textBox2->Location = System::Drawing::Point(133, 125); this->textBox2->Name = L"textBox2"; this->textBox2->Size = System::Drawing::Size(100, 20); this->textBox2->TabIndex = 3; // // label1 // this->label1->AutoSize = true; this->label1->Location = System::Drawing::Point(78, 76); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(14, 13); this->label1->TabIndex = 4; this->label1->Text = L"X"; // // label2 // this->label2->AutoSize = true; this->label2->Location = System::Drawing::Point(78, 128); this->label2->Name = L"label2"; this->label2->Size = System::Drawing::Size(14, 13); this->label2->TabIndex = 5; this->label2->Text = L"Y"; // // button1 // this->button1->Location = System::Drawing::Point(336, 96); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 6; this->button1->Text = L"Start"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click_1); SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 20 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh // // button3 // this->button3->Location = System::Drawing::Point(177, 12); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(75, 23); this->button3->TabIndex = 7; this->button3->Text = L"Open"; this->button3->UseVisualStyleBackColor = true; this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click); // // cb // this->cb->FormattingEnabled = true; this->cb->Location = System::Drawing::Point(13, 13); this->cb->Name = L"cb"; this->cb->Size = System::Drawing::Size(121, 21); this->cb->TabIndex = 8; // // button4 // this->button4->Location = System::Drawing::Point(336, 155); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(75, 23); this->button4->TabIndex = 9; this->button4->Text = L"Home"; this->button4->UseVisualStyleBackColor = true; this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click); // // timer2 // this->timer2->Enabled = true; this->timer2->Interval = 2000; this->timer2->Tick += gcnew System::EventHandler(this, &Form1::timer2_Tick); // // Form1 // SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 21 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(436, 291); this->Controls->Add(this->button4); this->Controls->Add(this->cb); this->Controls->Add(this->button3); this->Controls->Add(this->button1); this->Controls->Add(this->label2); this->Controls->Add(this->label1); this->Controls->Add(this->textBox2); this->Controls->Add(this->textBox1); this->Controls->Add(this->button2); this->Name = L"Form1"; this->Text = L"Form1"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { s=1; this->Close(); } private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { if(start) { int i; //cvNamedWindow( "Video", );//tao window CvCapture* capture = cvCreateCameraCapture (0);//tao cau truc camera IplImage* frame; const char *aa "C:\\OpenCV2.1\\data\\haarcascades\\haarcascade_frontalface_alt_tree.xml"; SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van = Page 22 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh //"H:\\orac\\xml\\loc.xml"; //"H:\\orac\\xml\\haarcascade_mcs_upperbody.xml"; cascade = (CvHaarClassifierCascade* )cvLoad( aa, 0, 0, ); storage = cvCreateMemStorage(0);//tao bo nho dem cho qua trinh xu ly //if(storage == NULL){ //MessageBox::Show("ERROR: Could not create memory storage.\n" ); //cvWaitKey (200); //return -1; //} while(1){ frame = cvQueryFrame( capture ); //if( !frame ) break; //IplImage* img = cvCreateImage(cvSize(frame->width/2,frame->height/2), 8, );//chuyen kich co //cvResize( frame, img, CV_INTER_LINEAR ); //cvSmooth (img,img,CV_GAUSSIAN ,5,5); cvClearMemStorage( storage );//chuan bi vung nho CvSeq *faces = cvHaarDetectObjects(frame,cascade,storage,1.1,6,CV_HAAR_DO_CANNY_PRUNING ,cvSize(40,40)); for( i = ; i < ( faces?faces->total:0); i++ ) //if( faces && faces->total ) { CvRect*r = (CvRect*)cvGetSeqElem( faces,i); cvRectangle( frame, cvPoint( r->x, r->y), cvPoint( r->x + r->width, r->y + r->height ), CV_RGB( 255, 255, ), 3, 8, ); this->textBox1->Text = System::Convert::ToString(r->x); this->textBox2->Text = System::Convert::ToString(r->y); if (gui==1) { if (home ==1)this->sp->Write(System::Convert::ToString(r>x)+"a"+System::Convert::ToString(r->y)+"b"); else if (home==0) this->sp->Write(System::Convert::ToString(r>x)+"x"+System::Convert::ToString(r->y)+"y"); } SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 23 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh } cvShowImage ("video",frame); char c = cvWaitKey(1); if( c == 27 ) break; if( s==1) break; } cvReleaseCapture (&capture); cvDestroyWindow( "video" ); //if( button2->Click) break; // cvReleaseHaarClassifierCascade( &cascade ); // cvReleaseMemStorage( &storage ); //return 0; } } private: System::Void Form1_Load(System::Object^ System::EventArgs^ e) { sender, array^ A = this->sp->GetPortNames(); for (int i = ; iLength;i++) { this->cb->Items->Add(A[i]); } } private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { start =1; } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { this->sp->PortName=Convert::ToString(this->cb->SelectedItem); this->sp->Open(); } private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) { home=gui=1; this->timer1->Enabled=true; this->sp->Write("h"); } private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) { SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 24 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh } private: System::Void timer2_Tick(System::Object^ sender, System::EventArgs^ e) { home=0; } }; } II.3.2: Chương trình tính Histogram cân Histogram Histogram lược đồ biểu diễn độ sáng ảnh Lược đồ bao gồm trục hoành biểu diễn mức sáng trục tung biểu diễn số lượng điểm sáng tương ứng Đối với ảnh xám thơng thường, giá trị trục hồnh nằm khoảng từ - 255 Hình 2.13: Histogram Nhìn vào biểu đồ ta biết phân bố cường độ sáng ảnh, với ảnh mà phân bố histogram lệch bên phải ảnh ảnh có độ sáng tốt Ngược lại ảnh ảnh tối Hình 2.14: Histogram ảnh tối SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 25 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh Hình 2.14: Histogram ảnh tối Hình 2.15: Histogram ảnh sáng Đối với ảnh màu, để tính histogram ảnh ta tính Histogram cuả kênh màu Giả sử hệ màu sử dụng hệ RGB, ta tính Histogram kênh R, G, B với ảnh xám thơng thường Phần cịn lại sau tơi giới thiệu cách tính Histogram ảnh màu đồng thời hiển thị biều đồ histogram kênh Code chương trình tình Histogram cân Histogram: #include "cv.h" #include "highgui.h" #include "iostream" using namespace std; void histogram() { IplImage * Img =cvLoadImage("p1.txt.jpg",0); SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 26 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh cvNamedWindow("My Picture"); cvShowImage("My Picture",Img); int height = Img->height; int width = Img->width; int hist[256]; // khai bao mang hist gom 256 phan tu //hien thi histogram for (int y=0; yimageData + y*Img->widthStep); for (int x=0; xptr[3*x+1]+40)&&(ptr[3*x+2]>ptr[3*x+0]+40))//RED { count_red++; } if ((ptr[3*x+1]>ptr[3*x+2]+20)&&(ptr[3*x+1]>ptr[3*x+0]+20))//GREEN SVTH: Đào Trọng Hiệp - Văn Ngọc Đức - Nguyễn Quí Lâm Luan van Page 28 NCKH: Nghiên cứu ứng dụng hệ thống xử lý ảnh thông qua Interactive Robot GVHD: PGS.TS Nguyễn Trường Thịnh { count_green++; } if ptr[3*x+1])ptr[3*x+0]+40))//YELLOW { count_yellow++; } } } if (count_blue>50000)// or 50000 { cout

Ngày đăng: 02/02/2023, 10:15