Как я могу нарисовать строку текста на пикселях изображения BGR, чтобы текст читался при отображении, c ++? - PullRequest
1 голос
/ 04 июня 2019

Существует ли простой способ изменить пиксели изображения BGR 72x72 пикселей, чтобы оно содержало строку текста, которая читается при отображении изображения.

По сути, мне нужно нарисовать текст в str в буфере изображения img, созданном ниже, таким образом, чтобы он мог быть прочитан при отображении изображения.

unsigned char img[72*72*3]; // 72*72*3 BGR image buffer
unsigned char B = 0x00; 
unsigned char G = 0x00;
unsigned char R = 0x00;
std::string str = "Test Text";

// Create BGR image
for (int i = 0; i < (72*72*3); i += 3)
{
    img[i + 0] = B;
    img[i + 1] = G;
    img[i + 2] = R;
}

// Draw str on BGR image buffer?

1 Ответ

1 голос
/ 04 июня 2019

Я бы предложил CImg вот так:

#include <iostream>
#include <cstdlib>
#define cimg_display 0
#include "CImg.h"

using namespace cimg_library;
using namespace std;

int main() {
   // Create 72x72 RGB image
   CImg<unsigned char> image(72,72,1,3);

   // Fill with magenta
   cimg_forXY(image,x,y) {
      image(x,y,0,0)=255;
      image(x,y,0,1)=0;
      image(x,y,0,2)=255;
   }

   // Make some colours
   unsigned char cyan[]    = {0,   255, 255 };
   unsigned char black[]   = {0,   0,   0   };

   // Draw black text on cyan
   image.draw_text(3,20,"Test text",black,cyan,1,16);

   // Save result image as NetPBM PNM - no libraries required
   image.save_pnm("result.pnm");
}

enter image description here

Это небольшой, быстрый, всеобъемлющий по функциональности, современный C ++ и «только заголовок» , что означает, что вам также не нужно ссылаться на что-либо.

...