use split/merge instead of extract/insert

pull/3471/head
kallaballa 2 years ago
parent c4e3a6a20a
commit 9ad12b9e0e
  1. 29
      src/nanovg/nanovg-demo.cpp

@ -138,6 +138,7 @@ int main(int argc, char **argv) {
float height = capture.get(cv::CAP_PROP_FRAME_HEIGHT);
v2d->makeVAWriter(OUTPUT_FILENAME, cv::VideoWriter::fourcc('V', 'P', '9', '0'), fps, cv::Size(width, height), VA_HW_DEVICE_INDEX);
std::vector<cv::UMat> hsvChannels;
cv::UMat rgb;
cv::UMat bgra;
cv::UMat hsv;
@ -154,17 +155,23 @@ int main(int argc, char **argv) {
v2d->clgl([&](cv::UMat &frameBuffer) {
cvtColor(frameBuffer, rgb, cv::COLOR_BGRA2RGB);
//Color-conversion from RGB to HSV. (OpenCL)
cv::cvtColor(rgb, hsv, cv::COLOR_RGB2HSV_FULL);
//Extract the hue channel
cv::extractChannel(hsv, hueChannel, 0);
//Set the current hue
hueChannel.setTo(hue);
//Insert the hue channel
cv::insertChannel(hueChannel, hsv, 0);
//Color-conversion from HSV to RGB. (OpenCL)
cv::cvtColor(hsv, rgb, cv::COLOR_HSV2RGB_FULL);
//Color-conversion from RGB to BGRA. (OpenCL)
});
//Color-conversion from RGB to HSV. (OpenCL)
cv::cvtColor(rgb, hsv, cv::COLOR_RGB2HSV_FULL);
//split the channels
split(hsv,hsvChannels);
//Set the current hue
hsvChannels[0].setTo(hue);
//merge the channels back
merge(hsvChannels,hsv);
//Color-conversion from HSV to RGB. (OpenCL)
cv::cvtColor(hsv, rgb, cv::COLOR_HSV2RGB_FULL);
//Color-conversion from RGB to BGRA. (OpenCL)
v2d->clgl([&](cv::UMat &frameBuffer) {
cv::cvtColor(rgb, frameBuffer, cv::COLOR_RGB2BGRA);
});

Loading…
Cancel
Save