Tôi muốn lặp lại từng màu pixel trong hình ảnh định dạng jpg
,Cách xử lý hình ảnh jpg với c/C++ dễ dàng nhất?
thư viện nào tôi nên tham khảo để làm điều này để mã có thể càng ngắn càng tốt?
Tôi muốn lặp lại từng màu pixel trong hình ảnh định dạng jpg
,Cách xử lý hình ảnh jpg với c/C++ dễ dàng nhất?
thư viện nào tôi nên tham khảo để làm điều này để mã có thể càng ngắn càng tốt?
Tôi có thể nghĩ hoặc là ImageMagick hoặc CImg. Đây là số CImg tutorial cho bạn. Chúng trừu tượng hóa rất nhiều chi tiết giải nén và chỉ cung cấp cho bạn một mạng lưới để làm việc.
Nếu bạn dùng CImg, bạn chỉ cần sử dụng cuộc gọi data. Bạn có thể làm điều gì đó như:
CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10
unsigned char pixel = *ptr;
jpeglib là một thư viện khá tiện dụng để chơi với jpegs.
Để truy cập thông tin mức pixel. libjpeg & Công cụ I/O hình ảnh JAI phải đủ. JAI cung cấp khung xử lý hình ảnh tiên tiến hơn thế này. Tất cả các tùy chọn cho phép bạn đọc/ghi các pixel vào một tệp hình ảnh.
libjpeg Trong C/C++. Nó có sẵn cho Linux và Window. Tôi đã sử dụng nó trong Linux trước và nó hoạt động tốt. Tuy nhiên, nếu bạn muốn xử lý loại hình ảnh khác, bạn có thể cần phải nhận gói khác và tìm hiểu giao diện API khác.
Hình ảnh nâng cao Java (JAI) Hình ảnh I/O Công cụ Hãy nhớ tải xuống gói java nền tảng cụ thể vì có tối ưu hóa cụ thể cho hệ thống khác nhau. Nó bao gồm không chỉ JPG nhưng định dạng hình ảnh khác quá với giao diện chính xác cùng một API.
Hình ảnh nâng cao Java (JAI) Nếu bạn dự định tiến hành xử lý nâng cao hơn như sử dụng toán tử hình ảnh và bộ lọc, bạn có thể sử dụng điều này. Đây là một gói cung cấp chức năng cấp cao hơn các công cụ I/O hình ảnh JAI.
EDIT: để loại bỏ 1, 2 & 3 như đề xuất
câu trả lời không được hiển thị trong bất kỳ trật tự cố định, do đó, đề cập đến khác câu trả lời là # 1, # 2, # 3 là khó hiểu. Sẽ hữu ích nếu tóm tắt câu trả lời (ở đây có thể là tên khung) hoặc đặt tên cho người trả lời để xác định các câu trả lời khác. Liên kết các câu trả lời khác thậm chí còn tốt hơn. –
@Ben Voigt: lưu ý và cảm ơn bạn đã chia sẻ thực hành tốt này. – ttchong
Tôi sẽ sử dụng Allegro trò chơi Thư viện http://liballeg.org/Allegro nó đơn giản/mã nguồn mở/miễn phí/đa nền, và bạn có thể lặp lại từng pixel nếu bạn muốn
Qt có một lớp QImage:
QImage i("input.jpg");
int x, y;
for (y = 0; < i.height(); ++y) {
for (x = 0; x < i.width(); ++x) {
doSomethingWith(i.pixel(x, y));
}
}
Có, Qt thật tuyệt –
Hãy thử FreeImage, có vẻ như khá linh hoạt và nhiều dự án sử dụng nó.
CImg là một thư viện tốt. Thứ hai. –
Cách lấy chiều rộng và chiều cao? – user198729
Tôi đã thay đổi ví dụ để chỉ cho bạn cách lấy chiều cao/chiều rộng –