I need a suggestion how to convert the image in rectangle into a grayscale image.
I want to convert the rectangle around the tube to grayscale:
for (int i = 612; i >= 0; i = i-204)
{
cout << "i" << i << endl;
rectangle( OI, Rect(i, 0, 161, 643), 1, 2, 8, 0 );
}
imshow("Display window",OI);
I am using rectangle
function to draw rectangle.
Are there any suggestions for how can I convert the image in the rectangle into grayscale?
You can:
Result (example with 2 roi):
Code:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
// Your image
Mat3b img = imread("path_to_image");
// Your rects
vector<Rect> rois{ Rect(50, 50, 200, 300), Rect(400, 100, 200, 380) };
for (int i = 0; i < rois.size(); ++i)
{
// Convert each roi to grayscale
Mat crop = img(rois[i]).clone(); // Crop is color CV_8UC3
cvtColor(crop, crop, COLOR_BGR2GRAY); // Now crop is grayscale CV_8UC1
cvtColor(crop, crop, COLOR_GRAY2BGR); // Now crop is grayscale, CV_8UC3
crop.copyTo(img(rois[i])); // Copy grayscale CV_8UC3 into color image
}
// Show results
imshow("Result", img);
waitKey();
return 0;
}