2013-08-04 112 views
9

Tôi đang sử dụng DirectShow.Net để truyền trực tuyến webcam tới ứng dụng C# (4.0) để đọc mã QR. Đó là chụp nhanh mỗi 0,5 giây để xem liệu nó có thể tìm thấy bất kỳ mã QR nào và giải mã chúng hay không. Điều này hoạt động tốt trên máy tính của tôi ở bất kỳ độ phân giải nào tôi có thể lấy webcam, nhưng khi tôi thử trên một máy mục tiêu (Panasonic CF-U1 Toughbook - bộ vi xử lý Intel Atom) nó thực sự bắt đầu giảm xuống khi tôi đi đến độ phân giải cao hơn hơn 800x600 trên webcam.Chụp ảnh từ webcam ở độ phân giải cao trong khi xem trước ở mức thấp hơn bằng DirectShow.Net

Tôi đang sử dụng lớp Capture từ mẫu DirectXShn.Net DxSnap (không gian tên Ảnh chụp nhanh). Tôi đang chuyển sang một Picturebox để vẽ bản xem trước. Tôi khá chắc chắn đây là những gì là bogging xuống hệ thống (đoán card màn hình chỉ là không lên đến nhiệm vụ). Tôi cần phải có bản xem trước được rút ra (để người dùng có thể nhìn thấy những gì họ đang cố gắng quét), nhưng nó không phải ở độ phân giải tương tự như hình ảnh được chụp để tìm mã QR. Vì chương trình này được tạo cho các thiết bị có độ phân giải màn hình thấp nên hộp xem trước tối đa ở mức 320 x 240 (tôi điều chỉnh tỷ lệ cỡ ảnh theo độ phân giải được chọn trên máy ảnh).

Vì vậy, tôi đoán những gì tôi đang tìm kiếm là bất kỳ những điều sau đây:

  1. Một cách để có hai con suối đi từ webcam cùng, một ở res thấp để xem trước và một ở res cao để chụp

  2. Cái gì đó tương đương với đó, có thể giảm độ phân giải ngay trước khi nó được ghi vào hộp hình ảnh (một lần nữa, bằng cách sử dụng lớp Sao chép từ các mẫu DxSnap từ dự án DirectShow.Net)

  3. Một cách để giữ cho hộp hình không bị làm mới quá nhiều

  4. Một thứ khác ngoài DirectShow.Net để sử dụng cho loại điều này (nó phải làm việc với mọi thứ từ Windows XP đến Windows 8 trong không gian màn hình).

Cảm ơn sự giúp đỡ của bạn.

+0

bạn đã bao giờ tìm ra điều này chưa? –

Trả lời

0
  1. Bạn có thể chia luồng bằng SmartTee hoặc InfiniteTee, nhưng tôi không chắc chắn cách thay đổi độ phân giải sau khi bạn đã chia nhỏ.
  2. Không chắc chắn cách thực hiện việc này.
  3. Bạn có thể chụp ảnh và đặt thủ công chúng vào hộp hình bằng cách sử dụng SampleGrabber. Sau đó, bạn có toàn quyền kiểm soát khi khung được hiển thị trong hộp hình ảnh.
  4. Nếu bạn muốn XP trở lên, bạn sẽ cần sử dụng DirectShow. MediaFoundation (giải pháp thay thế hiện đại) chỉ là Vista trở lên.

Ứng dụng của tôi hiện đang chụp ảnh ở độ phân giải khác với độ phân giải của video mà người dùng đang xem. Tôi đang làm điều này bởi vì webcam tôi đang sử dụng (Logitech C920) có cả một pin Capture và một chân Still, trong đó có danh sách khác nhau của các định dạng video. Tôi có thể nhận được tập hợp các độ phân giải cho từng chốt một cách độc lập và thay đổi độ phân giải tôi cần. Ứng dụng của tôi chỉ liên quan đến độ phân giải của pin tĩnh, vì vậy tôi thay đổi điều đó trong khi pin Capture vẫn giữ ở mức 640 x 480 ở mọi thời điểm. Tôi tin rằng SmartTee là nghĩa vụ phải làm một cái gì đó tương tự như thế này mà không cần một pin Still, nhưng tôi không phải là một guru DirectShow, vì vậy một người nào khác sẽ cần phải điền vào bạn với thông tin đó.