使用OpenCV在灰度图像中绘制彩色矩形是否可能?我尝试了几种方法,但要么整个图像变成了灰度,要么是RGB。
CV_8UC1
图像上绘制彩色矩形。但是您可以在显示灰度图像的CV_8UC3
图像上绘制它。您可以使用cvtColor(..., ..., COLOR_GRAY2BGR)
创建一个CV_8UC3
灰色图像,然后在其上绘制彩色矩形,例如:CV_8UC1
类型,而是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;
}
我有疑问。灰度图像会以每个像素一个通道的形式存储。
您需要做的是将图像转换为彩色(使用红=绿=蓝=灰度值)。然后您可以在灰色背景中绘制任何颜色。但是当然整个图像就变成了彩色图像,很少有支持只有小面积颜色的灰度图像的情况。