Thông báo

Collapse
No announcement yet.

Hỏi về xử lý ảnh Opencv và điều khiển động cơ qua cổng RS232

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Nguyên văn bởi xuanlai Xem bài viết
    Mình cũng đang làm OpenCV với RS232 dùng VC++, không hiểu sao viết riêng từng project thì OK nhưng viết chung trên 1 MFC thì compile dc build dc nhưng execute ko ra gì cả. Có ai biết 2 cái này có bị xung đột gì không? Giúp mình với 2 ngày nay ko làm dc gì ráo.
    Chọn build trong chế độ debug để biết nó lỗi ở chỗ nào. Ý bạn viết chung trên MFC có nghĩa là gì ? Nếu bạn dùng nhiều projects trong một solution mà project nọ ảnh phụ thuộc vào project kia thì có thể ứng dụng của bạn sẽ xung đột. Có thể nêu lên cách tổ chức project của bạn không ?

    Comment


    • #17
      Để mình nói rõ hơn tí.
      Đề tài của mình là dùng động cơ servo điều khiển camera bám theo đối tượng sao cho khi đối tượng di chuyển thì camera quay theo để đối tượng nằm giữa màn hình ( mình chỉ xử lý 1 chiều theo trục x).
      Mình viết 1 MFC truyền thông RS232 như TUT của anh Ngô Hải Bắc đã hướng dẫn, truyền tốt, mình cũng viết 1 MFC khác(2 cái này không cùng project chỉ dùng để chạy thử chúng hoạt động thế nào thôi). Vì mình cần truyền xung cho VDK điều khiển servo quay nên phải dùng RS232 vào cái MFC xử lý ảnh, nghĩa là mình add thêm Microsoft Communication Control 6.0 vào, thêm 1 số hàm xử lý nữa. Mình đã làm nhiều lần, ( build và excute từng bước) cũng kiểm tra kỹ mỗi khi add Communication Control vào ( cái biểu tượng điện thoại màu vàng ấy) MFC trên thì build ko có error, nhưng excute ko chạy ứng dụng. Mình cũng đã thử viết RS232 trước rồi thêm các hàm xử lý ảng sau thì cũng bị tương tự mặc dù mình chỉ thêm 1 câu lệnh như sau : cvNamedWindow("source",0) vào hàm OnInitDlg() hay bất cứ hàm nào khác. Không biết bạn đã hiểu ý mình chưa?
      |

      Comment


      • #18
        Vậy là không phải phải như tôi nghĩ. Phần truyền thông RS232 không ảnh hưởng. Vấn đề là ở hàm cvNamedWindow. Nếu bạn dùng ứng dụng kiểu Dialog-based thì tại sao lại phải dùng cvNamedWindow ? Và hàm cvNamedWindow sẽ chỉ có ý nghĩa nếu bạn bạn gọi tiếp hàm cvShowImage. Bạn thử gọi hàm này sau hàm cvNamedWindow xem sao ? Chú ý các tham số của nó.

        Nếu bạn dùng Dialog-based thì nên dùng với DirectShow như link dưới đây:

        http://www.dientuvietnam.net/forums/...ll=1#post61278
        Last edited by compvis; 11-11-2010, 20:36.

        Comment


        • #19
          Nguyên văn bởi compvis Xem bài viết
          Vậy là không phải phải như tôi nghĩ. Phần truyền thông RS232 không ảnh hưởng. Vấn đề là ở hàm cvNamedWindow. Nếu bạn dùng ứng dụng kiểu Dialog-based thì tại sao lại phải dùng cvNamedWindow ? Và hàm cvNamedWindow sẽ chỉ có ý nghĩa nếu bạn bạn gọi tiếp hàm cvShowImage. Bạn thử gọi hàm này sau hàm cvNamedWindow xem sao ? Chú ý các tham số của nó.

          Nếu bạn dùng Dialog-based thì nên dùng với DirectShow như link dưới đây:

          http://www.dientuvietnam.net/forums/...ll=1#post61278
          Có lẽ bạn không hiểu ý mình lắm. Mình gửi cái project đơn giản sau để nếu rảnh bạn có thể kiểm tra dùng mình:
          http://www.mediafire.com/?p69p9cdd5lt74rd
          Cái project taolao đó mình chỉ đơn giản làm 2 việc sau:
          1. Tạo 1 cái dialog-based và add Communication Control 6.0 vào
          2.Viết thêm câu lệnh cvNamedWindow("source",0) vào hàm OnInitDlg().
          Kết quả là ko excute dc
          Mình xóa câu lệnh trên hoặc xóa cái Communication Control kia đi thì excute dc
          Cái lỗi này nó kỳ kỳ làm sao,ko hiểu nổi.
          Đúng là hàm cvNamedWindow chỉ có ý nghĩa khi có hàm cvShowImage nhưng nếu mình chỉ sử dụng hàm cvNamedWindow ko thì nó sẽ tạo ra 1 cửa sổ mà ko có image trong đó.Mình đã thử rồi.
          Bạn giúp mình thử nhé.
          Cảm ơn nhiều
          Last edited by xuanlai; 12-11-2010, 16:53.
          |

          Comment


          • #20
            @xuanlai:

            Chương trình bạn gửi tôi biên dịch và chạy bình thường. Chương trình bạn không có gì sai !



            Cửa sổ "source" được hiển thị bình thường.
            Last edited by compvis; 12-11-2010, 18:57.

            Comment


            • #21
              Oh. Cảm ơn bạn nhiều.Lúc bạn biên dịch có cái Communication Control ko?
              |

              Comment


              • #22
                @xuanlai: dự án của bạn như thế nào, tôi không thay đổi. Mở dialog ra thì có điều khiển MSCOMM trên dialog rồi. Khẳng định với bạn một lần nữa là dự án hoàn toàn bình thường.

                Last edited by compvis; 12-11-2010, 22:40.

                Comment


                • #23
                  Cảm ơn bạn!
                  Mình đã cài lại VS 6.0 nhưng vẫn không dc. Có lẽ tìm phiên bản khác thôi
                  |

                  Comment


                  • #24
                    Nguyên văn bởi xuanlai Xem bài viết
                    Cảm ơn bạn!
                    Mình đã cài lại VS 6.0 nhưng vẫn không dc. Có lẽ tìm phiên bản khác thôi

                    Vấn đề của bạn xuanlai là không biết dùng MFC chứ không phải ở chương trình
                    PS: Đúng không xuanlai
                    Bể học vô biên

                    Comment


                    • #25
                      Mình đã thử cài lại VS6 khác và OpenCV 1.1 luôn,giờ thì chạy ổn. Không biết bị cái quái gì.
                      |

                      Comment


                      • #26
                        Nguyên văn bởi xuanlai Xem bài viết
                        Mình đã thử cài lại VS6 khác và OpenCV 1.1 luôn,giờ thì chạy ổn. Không biết bị cái quái gì.
                        @xuanlai:
                        Xuanlai làm đề tài thực hiện xử lý ảnh của bạn là gì vậy
                        Bể học vô biên

                        Comment


                        • #27
                          Đề tài mình dùng webcam xoay đc nhờ DC servo bám theo đối tượng chuyển động,mình dùng phương pháp trừ 2 frame kề nhau rồi xác định tâm của sự dịch chuyển, sau đó tùy vào lệch trái hay lệch phải mà điều khiển servo xoay theo.Tới giờ này thì đã chạy dc nhưng tốc độ còn chậm và servo quay chưa trơn tru lắm.
                          |

                          Comment


                          • #28
                            Nguyên văn bởi xuanlai Xem bài viết
                            Đề tài mình dùng webcam xoay đc nhờ DC servo bám theo đối tượng chuyển động,mình dùng phương pháp trừ 2 frame kề nhau rồi xác định tâm của sự dịch chuyển, sau đó tùy vào lệch trái hay lệch phải mà điều khiển servo xoay theo.Tới giờ này thì đã chạy dc nhưng tốc độ còn chậm và servo quay chưa trơn tru lắm.
                            Oh !
                            Đề tài của bạn rất hay !
                            Mình chờ xem kết quả của ban

                            Goodluck thân!
                            Bể học vô biên

                            Comment


                            • #29
                              Nguyên văn bởi xuanlai Xem bài viết
                              Đề tài mình dùng webcam xoay đc nhờ DC servo bám theo đối tượng chuyển động,mình dùng phương pháp trừ 2 frame kề nhau rồi xác định tâm của sự dịch chuyển, sau đó tùy vào lệch trái hay lệch phải mà điều khiển servo xoay theo.Tới giờ này thì đã chạy dc nhưng tốc độ còn chậm và servo quay chưa trơn tru lắm.
                              Mình nghĩ bạn nên dùng Camshift, có ví dụ sẵn trong phần sample của OpenCV.Ngoài ra nếu lập trình ứng dụng GUI nên dùng QT, mình thấy dễ dùng hơn MFC, QT còn ứng dụng trên 1 số hệ điều hành linux nhúng nữa
                              Email:
                              Skype: thanhtruong0315

                              Comment


                              • #30
                                Nguyên văn bởi compvis Xem bài viết
                                @xuanlai: dự án của bạn như thế nào, tôi không thay đổi. Mở dialog ra thì có điều khiển MSCOMM trên dialog rồi. Khẳng định với bạn một lần nữa là dự án hoàn toàn bình thường.

                                Mình cũng bị lỗi giống vậy, không biết đã làm sai ở bước nào.
                                Mình viết chương trình XLA bằng MFC , chạy ngon rồi, giờ cứ đưa MScomm (biểu tượng điện thoại ) vào là lỗi như dưới đây( mình đã register cho MSCOMM32.OCX rùi nhé )


                                Thử viết 1 chương trình khác để test MScomm, nối tắt chân 2 với chân 3 , truyền nhận ngon, rùi thêm đúng mấy dòng
                                #include "cv.h"
                                #include "highgui.h"
                                CvCapture *capture=cvCaptureFromCAM(0); tới dòng này là lại lỗi như trên.

                                Ai biết xử lý lỗi này giúp mình với.Loay hoay với nó mãi mà chưa ổn.
                                Thanks.

                                Comment

                                Về tác giả

                                Collapse

                                freeone Tìm hiểu thêm về freeone

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X