int cx = (displayedFrame.cols - faceWidth) / 2; if (preprocessedFace.data) { Mat srcBGR = Mat(preprocessedFace.size(), CV_8U); cvtColor(preprocessedFace, srcBGR, CV_GRAY2BGR); Rect dstRC = Rect(cx, BORDER, faceWidth, faceHeight); Mat dstROI = displayedFrame(dstRC); srcBGR.copyTo(dstROI); } rectangle(displayedFrame, Rect(cx-1, BORDER-1, faceWidth+2, faceHeight+2), CV_RGB(200,200,200), 1, CV_AA); 这段代码是预处理人脸转换为彩色 然后再在
displayedFrame上面叠加一副和预处理人脸同样尺寸的图片dstROI 将转换为彩色的图像srcBGR复制给dstROI 然后我一直不懂为什么要将预处理人脸preprocessedFace转换为彩色图srcBGR,再进行叠加 为什么不直接进行叠加 或者为什么不将dstROI转换为灰度图进行叠加 后来查了一圈资料也没有查到将灰度图叠加到彩色图片上的方法 自己写了个demo试验了一下发现确实不行 自己思考估计叠加的图片是要和被叠加的图片同样的格式才可以,所以才要将预处理人脸转换为彩色图像 另外图片叠加的代码如下
int main() { Mat img = imread(
opencv彩色图像与灰度图像叠加
最新推荐文章于 2023-12-02 11:38:30 发布