Вы, вероятно, хотите, чтобы установить все пиксели изображения CV_8UC3
img
к цвету заданной b
, g
и r
;
Вы можете сделать это в OpenCV, как:
img.setTo(Vec3b(b, g, r));
или что то же самое:
img.setTo(Scalar(b, g, r));
В своем коде вы отсутствующие в основном все важные части:
- бесконечный цикл (так что вы выходите из программы без refreshi ng цвет изображения)
- присвоение нового цвета
- вы смешиваете устаревший синтаксис C и синтаксис C++.
Это то, что вам нужно:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
// Initialize a black image
Mat3b imgScribble(256, 512, Vec3b(0,0,0));
namedWindow("Image", WINDOW_AUTOSIZE);
createTrackbar("R", "Image", 0, 255);
createTrackbar("G", "Image", 0, 255);
createTrackbar("B", "Image", 0, 255);
while (true)
{
int r = getTrackbarPos("R", "Image");
int g = getTrackbarPos("G", "Image");
int b = getTrackbarPos("B", "Image");
// Fill image with new color
imgScribble.setTo(Vec3b(b, g, r));
imshow("Image", imgScribble);
if (waitKey(1) == 27 /*ESC*/) break;
}
return 0;
}
Весь код Python делает это заменить все индексы 'img' с тремя новыми. Чтобы разбить это поэтапно: очистите 'img', измените его размер на 3 элемента, присвойте' b' индексировать 0, 'g' для индекса 1 и' r' для индекса 2. Я уверен, что C++ может выполнить эти шаги так или иначе. –
Как выглядит ваш код на C++? Как хранится трэпл rgb? –
Что заставляет вас полагать, что большинство конструкций Python имеют эквивалент C++? И какой стандарт C++? Надеюсь, вы кодируете, по крайней мере, C++ 11 ..... Какой компилятор, какая операционная система, какие дополнительные библиотеки (стандартный C++ 11 не имеет понятия изображений или цветов)? –