OpenCV (C++) - Set HSV values of a pixel

∥☆過路亽.° 提交于 2019-12-02 03:28:21

You can:

  • build a mask where H channel equals 100, regardless the values of S,V channels (with inRange)
  • set frame3 to zero according to the mask (with setTo)

Something like:

Mat frame3; // CV_8UC3, HSV image

Mat mask;
inRange(frame3, Scalar(100,0,0), Scalar(100, 255, 255), mask);

frame3.setTo(Scalar(0,0,0), mask);

To keep your code structure, you need to modify the actual value, not a copy of the value. You can do that keeping a reference to the value:

 Vec3b& hsv = frame3.at<Vec3b>(i, j);
 if (hsv[0] != hue) {
    hsv[0] = 0;
    hsv[1] = 0;
    hsv[2] = 0;
 }  
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!