您不能获得混合的灰色和彩色图像。你可以看看有没有办法在同一图像opencv C++上同时拥有灰度和RGB像素? https://stackoverflow.com/q/31167490/5008845.
所以你不能在灰度上绘制彩色矩形CV_8UC1
图像。但你可以把它画在CV_8UC3
显示您的灰色图像的图像。
您可以创建一个CV_8UC3
灰色图像与cvtColor(..., ..., COLOR_GRAY2BGR)
,然后您可以在其上绘制彩色矩形,例如:
但请注意,此图像不再是类型CV_8UC1
, but CV_8UC3
反而。
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat1b gray = imread("path_to_image", IMREAD_GRAYSCALE);
// Convert gray image to BGR
Mat3b grayBGR;
cvtColor(gray, grayBGR, COLOR_GRAY2BGR);
// Draw the colored rectangle
rectangle(grayBGR, Rect(10, 10, 100, 200), Scalar(0,255,0), 2);
imshow("Image with Rect", grayBGR);
waitKey();
return 0;
}