OpenCV - ตัวเลือกที่เป็นไปได้สำหรับการบีบอัดรูปภาพ

ขอบคุณที่สละเวลาอ่านโพสต์ของฉัน

ฉันกำลังทำโปรเจ็กต์เล็กๆ ที่กำลังดำเนินไปได้ด้วยดี แต่เพื่อเป็นแบบฝึกหัดการปรับให้เหมาะสม ฉันต้องการลดขนาดของไฟล์ JPEG บางส่วนที่ฉันกำลังส่งออก ในขณะนี้ ฉันมี .jpg ซึ่งมีขนาด 600 x 400 ซึ่งมีขนาดประมาณ 80kb

ฉันได้อ่านรูปภาพประมาณ 32 บิต, 8 บิตที่มีการเซ็นชื่อ ไม่ได้ลงนาม และลอยตัว และอักขระ รวมถึงปริภูมิสี BGR และ YUV และไม่แน่ใจว่าปัจจัยใดที่ส่งผลต่อขนาดมากที่สุด

มีใครแนะนำได้ไหมว่าฉันจะเริ่มลดขนาดไฟล์นี้ได้ที่ไหน

แน่นอนว่าฉันจะเล่นและทำการทดสอบของตัวเองเพื่อค้นหาคุณภาพของภาพที่เหมาะสมกับความสมดุลของขนาดไฟล์

ขอบคุณมากล่วงหน้าเคย์


person Kay Warner    schedule 06.03.2013    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนคุณต้องการบีบอัดรูปภาพของคุณเมื่อเขียนลงดิสก์

นี่สำหรับ jpeg:

std::vector<int> params;
params.push_back(CV_IMWRITE_JPEG_QUALITY);
params.push_back(100);   // that's percent, so 100 == no compression, 1 == full 
cv::imwrite("my.jpg",image,params);

และที่นี่สำหรับ PNG:

std::vector<int> params;
params.push_back(CV_IMWRITE_PNG_COMPRESSION);
params.push_back(9);   // that's compression level, 9 == full , 0 == none
cv::imwrite("my.png",image,params);
person berak    schedule 06.03.2013
comment
berak ขอบคุณมากสำหรับสิ่งนั้น นั่นคือสิ่งที่ฉันต้องการ! โค้ดยาวและเจริญรุ่งเรือง! - person Kay Warner; 07.03.2013