มีทางเลือกอื่นนอกเหนือจากการใช้ getframe
และ saveas
ในการบันทึกเนื้อหาของรูปภาพลงในภาพแรสเตอร์เพื่อการประมวลผลเพิ่มเติมหรือไม่
แนวทางที่ 1: getframe
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
content = frame2im(getframe(h));
นี่เป็นข้อเสียเปรียบร้ายแรงในการแสดงภาพเพื่อจับภาพหน้าจอในการเรียก getframe()
และเป็นปัญหาเมื่อทำการเรนเดอร์ในลักษณะวนซ้ำ (เช่น การบันทึก content
ในการวนซ้ำแต่ละครั้งเป็นเฟรมวิดีโอ)
แนวทางที่ 2: saveas
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
saveas(h, '/path/to/file.png');
content = imread(/path/to/file.png');
วิธีการนี้มีข้อเสียเปรียบอย่างร้ายแรงในการเขียนลงดิสก์ ซึ่งเป็นปัญหาในแอปพลิเคชันแบบมัลติเธรด รวมถึงช้ากว่าการเรนเดอร์ไปยังหน่วยความจำโดยตรง เนื่องจาก saveas()
จะแสดงผลไปยังหน่วยความจำอย่างชัดเจนก่อนที่จะเรียกใช้ตัวเข้ารหัส PNG สิ่งที่ฉันต้องการจึงเป็นไปได้ แต่ฉันไม่พบฟังก์ชันใด ๆ ในเอกสาร MATLAB ที่ทำเฉพาะส่วนการเรนเดอร์เท่านั้น
คำถาม:
คุณทราบถึงวิธีอื่นในการแสดงเนื้อหา axes
โดยพลการให้เป็นภาพแรสเตอร์หรือไม่?