Tôi có máy ảnh và tôi đang đọc hình ảnh trong thời gian thực thành một mảng. Tôi đang áp dụng một số thuật toán cho hình ảnh và hiển thị nó. Sau đó, tôi nhận được hình ảnh tiếp theo và hiển thị nó là tốt. Vì vậy, tôi đang truyền hình ảnh từ máy ảnh đến màn hình. Tuy nhiên tôi cũng muốn lưu hình ảnh vào đĩa cứng khi tôi đã hiển thị chúng. Tôi đã cố gắng bằng cách sử dụng các chủ đề chính nhưng tất cả mọi thứ chậm lại quá nhiều. Sau đó tôi đã thử sử dụng ThreadPool (xem mã bên dưới). Điều này không làm chậm màn hình hiển thị nhưng tôi thấy các hình ảnh không được lưu đúng cách. Dường như họ không theo thứ tự mong đợi và sau khoảng 50 hình ảnh đã được lưu, dữ liệu hình ảnh tiếp theo sẽ bị cắt xén. Tôi đoán quá nhiều chủ đề đang được bắt đầu.Làm cách nào để lưu tệp vào đĩa cứng trong một chuỗi riêng biệt?
Có cách nào tốt hơn để thực hiện việc này không? Tôi nghĩ rằng tôi chỉ cần một sợi để lưu hình ảnh. Có thể một số loại hàng đợi lưu từng ảnh một cách liên tục. Chỉ cần miễn là nó được thực hiện trong nền và không làm chậm màn hình. Nếu ai đó có thể đăng đoạn mã sẽ tuyệt vời.
short[] image1 = new short[20000];
while(streaming)
{
ReadImageFromCamera(ref image1)
ImageData data;
data.fileName = imageNumber;
data.image = image1;
ThreadPool.QueueUserWorkItem(WriteImageToFile, data); // Send the writes to the queue
}
private void WriteImageToFile(object imageData) {
try {
ImageData data = (ImageData)imageData;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
string fName = myDirectory + @"/" + Convert.ToString(data.fileName) + @".spe";
using (Stream myStream = new FileStream(fName, FileMode.Create)) {
bf.Serialize(myStream, data.image);
}
}
catch (Exception) { }
}
ngắn [] image1 = new short [20000]; Tôi đang gessing bạn chắc chắn rằng hình ảnh của bạn không mất nhiều hơn 40000 byte. –
Liệu dữ liệu sao chép 'ReadImageFromCamera' vào mảng mà bạn truyền hay tạo một mảng mới được gán cho' image1'? –
vâng xin lỗi thats chỉ để minh họa. Các hình ảnh có kích thước khác nhau tùy thuộc vào cài đặt người dùng (nhưng không phải khi phát trực tuyến đã bắt đầu). Im đọc tất cả dữ liệu hình ảnh OK để không có vấn đề ở đó. – Doug