OpenCV and C++: change the color of some object in the image

asked 2018-03-27 14:08:11 -0600

I'm new to OpenCV and I'm trying to do some simple operations with an image.

I have this image. First of all, when the left button is clicked I have to compute the mean RGB color over a 9x9 neighborhood of the clicked point, then segment the soccer shirts by applying a static threshold to the three channels R, G and B (ΔR < 50, ΔG < 50, ΔB < 50), finally apply the new color to the shirts (RGB = (92,37,201)). This is my code:

#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#define NEIGHBORHOOD_SIZE 9
#define THRESH_R 50
#define THRESH_G 50
#define THRESH_B 50
#define THRESH_H 10



using namespace std;
using namespace cv;


static void onMouse (int event, int x, int y, int f, void* userdata) {

    if(event == EVENT_LBUTTONDOWN) {
        cout << "Left button clicked - position (" << x << ", " << y << ")" << endl;

        Mat image = (*(Mat*) userdata);

        //mean on the neighborhood code to be insert

        //color segmentation code to be insert
        Mat image_out = image.clone();
        namedWindow("final_result", CV_WINDOW_AUTOSIZE);
        cv::imshow("final_result", image_out);
        cv::waitKey(0);
  }

}


int main() {

    Mat image = imread("robocup.jpg");
    namedWindow("Robocup", CV_WINDOW_AUTOSIZE);
    if(!image.empty()) {
        imshow("Robocup", image);
    }
    setMouseCallback("Robocup", onMouse, &image);
    waitKey(0);
    destroyWindow("Robocup");
    return 0;
}

Anyone can help me? Thank you!

edit retag flag offensive close merge delete

Comments

mean is mean then your result is mean(image(Rect(x-4,y-4,9,9)). Becarefful I don't check x-4>0 and y-4>0 and y+4<rows and="" x+4<cols<="" p="">

threshold is threshold Threshold values is 50 for all channels then fixe thresh to 50.

finally apply the new color to the shirts (RGB = (92,37,201)). ?? why do you mean? all shirts?

LBerger gravatar imageLBerger ( 2018-03-27 14:23:31 -0600 )edit
1

Thank you, I've done successfully the mean. Yes, I've to change the color of all the robot's shirts

forzalupi1912 gravatar imageforzalupi1912 ( 2018-03-27 16:09:00 -0600 )edit