Tôi muốn ghi vào một hình ảnh văn bản được định dạng. OpenCV chỉ cung cấp một bộ phông chữ mặc định giới hạn. Có thể sử dụng người khác không? Ví dụ để đọc chúng từ tệp * .ttf (trong Ubuntu)?OpenCV: Cách sử dụng phông chữ khác với HERSHEY với cvPutText (như Arial)
Trả lời
Có thể sử dụng phông chữ khác nhưng bạn cần phải liên kết các thư viện Qt để OpenCV và sử dụng chức năng cvAddText với một cvFontQt
http://docs.opencv.org/modules/highgui/doc/qt_new_functions.html#addtext
http://docs.opencv.org/modules/highgui/doc/qt_new_functions.html#fontqt
Có nhiều giải pháp khác mà bạn có thể thử, với nhiều hoặc ít hiệu suất tương tự như OpenCV. Ví dụ: bạn có thể sử dụng CAIRO để viết phông chữ vào hình ảnh.
Nếu bạn không thể hoặc không muốn sử dụng các ràng buộc Qt, đây là một cách để làm điều đó với CAIRO:
#include <opencv2/opencv.hpp>
#include <cairo/cairo.h>
#include <string>
void putTextCairo(
cv::Mat &targetImage,
std::string const& text,
cv::Point2d centerPoint,
std::string const& fontFace,
double fontSize,
cv::Scalar textColor,
bool fontItalic,
bool fontBold)
{
// Create Cairo
cairo_surface_t* surface =
cairo_image_surface_create(
CAIRO_FORMAT_ARGB32,
targetImage.cols,
targetImage.rows);
cairo_t* cairo = cairo_create(surface);
// Wrap Cairo with a Mat
cv::Mat cairoTarget(
cairo_image_surface_get_height(surface),
cairo_image_surface_get_width(surface),
CV_8UC4,
cairo_image_surface_get_data(surface),
cairo_image_surface_get_stride(surface));
// Put image onto Cairo
cv::cvtColor(targetImage, cairoTarget, cv::COLOR_BGR2BGRA);
// Set font and write text
cairo_select_font_face (
cairo,
fontFace.c_str(),
fontItalic ? CAIRO_FONT_SLANT_ITALIC : CAIRO_FONT_SLANT_NORMAL,
fontBold ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(cairo, fontSize);
cairo_set_source_rgb(cairo, textColor[2], textColor[1], textColor[0]);
cairo_text_extents_t extents;
cairo_text_extents(cairo, text.c_str(), &extents);
cairo_move_to(
cairo,
centerPoint.x - extents.width/2 - extents.x_bearing,
centerPoint.y - extents.height/2- extents.y_bearing);
cairo_show_text(cairo, text.c_str());
// Copy the data to the output image
cv::cvtColor(cairoTarget, targetImage, cv::COLOR_BGRA2BGR);
cairo_destroy(cairo);
cairo_surface_destroy(surface);
}
Ví dụ gọi:
putTextCairo(mat, "Hello World", cv::Point2d(50,50), "arial", 15, Scalar(0,0,255), false, false);
Nó giả định rằng mục tiêu hình ảnh là BGR.
Nó đặt trung tâm của văn bản vào điểm đã cho. Nếu bạn muốn một số vị trí khác nhau, bạn phải sửa đổi cuộc gọi cairo_move_to
.
Đây là câu trả lời hay! –
Cảm ơn mẹo. Nhưng 'centerAnchor' có đề cập đến 'centerPoint' không? Và làm thế nào chúng ta có thể cài đặt Cairo trong Ubuntu 16.04? – user1098761
@ user1098761 'sudo apt install libcairo2-dev'. Nếu bạn đang sử dụng CMake, bạn có thể làm theo câu trả lời này https://stackoverflow.com/questions/41636886/cairo-library-and-cmake. Tôi đã sử dụng FindCairo.cmake từ WebKit. –
- 1. Phông chữ tương đương với Arial Unicode MS
- 2. Arial Black - Phông chữ Websafe?
- 3. Điều chỉnh kích thước phông chữ tùy thuộc vào phông chữ nào được sử dụng từ ngăn xếp phông chữ
- 4. Trừ phông nền hiệu quả với OpenCV
- 5. cách sử dụng màu phông chữ html
- 6. Sử dụng cùng một phông chữ với các kích thước khác nhau trong libgdx
- 7. Phông chữ giống như Metro để sử dụng trang web
- 8. Có thể sử dụng phông chữ tùy chỉnh - sử dụng phông chữ không?
- 9. TextView với phông chữ và kiểu khác nhau?
- 10. phông chữ emacs cho phương tây và Khác như rtl
- 11. Outlook 2010 ghi đè gia đình phông chữ từ Arial sang Times New Roman
- 12. Phông chữ web nhúng với sifr?
- 13. $ .width() trả về kết quả khác nhau khi sử dụng phông chữ tùy chỉnh
- 14. StringFormat với trọng số phông chữ
- 15. Thêm phông chữ mới vào tùy chọn phông chữ TinyMCE
- 16. Làm cách nào để sử dụng phông chữ TrueType với LaTeX
- 17. Sử dụng phông chữ pixel trong PIL
- 18. Nhiều phông chữ trong thuộc tính Phông chữ-Gia đình?
- 19. Sử dụng phông chữ bitmap GLUT
- 20. đăng ký phông chữ với Raphael bằng cách sử dụng CSS3 @ font-face
- 21. Cách sử dụng Ghostscript để sử dụng các phông chữ được nhúng trong PDF
- 22. Sử dụng phông chữ Windows (TTF)?
- 23. Sử dụng phông chữ Roboto trong ứng dụng với mức API tối thiểu 14
- 24. Twitter Bootstrap - Sử dụng phông chữ serif
- 25. phông chữ-biến thể: mũ nhỏ; cho thấy kích cỡ phông chữ khác nhau sử dụng Chrome hoặc Firefox
- 26. Thêm màu phông chữ css với jquery
- 27. Tải trước phông chữ phông chữ?
- 28. Cách căn chỉnh hai từ với các kích thước phông chữ khác nhau cùng một dòng?
- 29. Cài đặt phông chữ với Wix không vào thư mục phông chữ cục bộ
- 30. NSFont - Cách nhận phông chữ phù hợp?
Hãy xem liên kết http://opencv.willowgarage.com/documentation/cpp/drawing_functions.html#cv-puttext – G453