Chào các bạn. Mình có 1 đoạn code như bên dưới. Đoạn code này sẽ lưu dữ lieu một bức ảnh từ camera xuống file binary rồi đọc trở lại nhưng gặp lỗi không tìm được nguyên nhân.
// đọc dữ lieu từ camera
Camera::getLastFrame();
cv::Mat* img_raw = Camera::RawImage;
// đoạn code test copy
//for (int i = 0; i < 6220800; i++) img_restore->data[i]=img_raw->data[i];
// lưu xuống file.
//mảng dữ lieu của ảnh được trỏ bởi con trỏ data (unsigned char*), độ dài dữ lieu là 6220800 byte (ảnh full HD BGR)
std::fstream filesave;
filesave.open("Programs\\Test.aoi", std::ios::out);
filesave.write((char*)img_raw->data, 6220800);
filesave.close();
// nghi ngờ lỗi do máy tính chưa kịp lưu nên đã delay nhưng không có tác dụng
//System::Threading::Thread::Sleep(800);
// đọc dữ lieu từ file vào vùng dữ lieu ảnh của ảnh restore.
std::fstream fileread;
fileread.open("Programs\\Test.aoi", std::ios::in);
fileread.read((char*)img_restore->data, 6220800);
fileread.close();
// hiển thị ảnh restore
ShowImage(img_restore);
Hiện trạng lỗi như sau:
Nếu chỉ chạy đoạn code test copy trực tiếp từ img_raw sang img_restore thì ảnh restore hiển thị OK như sau:
Tuy nhiên nếu bỏ đoạn test copy và chạy đoạn code save / read thì ảnh sau khi restore bị sai. Nó going như khi xem đĩa bị vấp hình.
Có một chi tiết them là nếu mình chỉnh sửa vào tất cả các byte của dữ liệu ảnh img_raw thì ảnh sau khi đọc lại đúng.
Khích lệ các anh em sẽ có 50K thẻ nạp cho ai có solution