I'm working on a segmentation algorithme for medical images and during the process it must display the evolving contour on the original image.
I'm working with greyscale JPEG. In order to display the contours I use the drawContours function but I can't manage to draw a color contour. I would like to draw a red contour on the greyscale image but it only appears black or white.
Here is the section of the code:
Mat_<uchar> matrix = imread(path,0);
int row = matrix.rows;
int col = matrix.cols;
Mat_<uchar> maskInter(row,col);
for (int i=0; i<row; i++)
for (int j=0; j<col; j++)
{
if ((double)matrix(i,j) <0)
{maskInter(i,j)=255;}
else
{maskInter(i,j)=0;}
};
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
Mat mat_out = maskInter.clone();
findContours( mat_out, contours, hierarchy, CV_RETR_TREE , CHAIN_APPROX_SIMPLE);
drawContours( img, contours, -1, RGB(255,0,0),1.5,8,hierarchy,2,Point());
namedWindow(title);
moveWindow(title, 100, 100);
imshow(title, img);
waitKey(0);
Is it possible to display a color contour on a greyscale image?
Thanks
To draw the contours, cv. drawContours function is used. It can also be used to draw any shape provided you have its boundary points. Its first argument is source image, second argument is the contours which should be passed as a Python list, third argument is index of contours (useful when drawing individual contour.
Convert an Image to Grayscale in Python Using the color. rgb2gray() Method of the scikit-image Module. The color. rgb2gray() takes an image in RGB format as input and returns a grayscale copy of the input image.
You need a 3-channel (RGB) image in order to draw and display colors. Your Mat_<uchar> matrix
is only one channel. You can convert your grayscale image to a color image as follows:
// read image
cv::Mat img_gray = imread(path,0);
// create 8bit color image. IMPORTANT: initialize image otherwise it will result in 32F
cv::Mat img_rgb(img_gray.size(), CV_8UC3);
// convert grayscale to color image
cv::cvtColor(img_gray, img_rgb, CV_GRAY2RGB);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With