如果我有一个像这样的遮罩:
但是,正如您所看到的,我在
并且我有一张图片(大小与遮罩相同):
我想在图像中突出显示遮罩。 如果我使用其他语言,只需
如您所见,结果图像使用透明红色显示了遮罩。 我希望在OpenCV中实现这一点。 因此,我编写了以下代码:
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main() {
Mat srcImg = imread("image.jpg");
Mat mask = imread("mask.jpg", IMREAD_GRAYSCALE)>200;
for(int i=0;i<srcImg.rows;i++)
for(int j=0;j<srcImg.cols;j++)
if(mask.at<uchar>(i, j)==255)
circle(srcImg, Point(j,i), 3, Scalar(0, 0, 128,128));
imshow("image",srcImg);
waitKey();
return 0;
}
但是,正如您所看到的,我在
Scalar
中使用了一个alpha值,但它并不是透明的红色。
srcImg
只有3个通道。我有两个关于此事的问题:
- 如何用透明的红色突出显示掩码(即使图像只有3个通道)?
- 我必须逐像素地绘制
circle
来完成这件事吗?
findContours
的返回签名已经从3个变量改为2个 - 即去掉im2
部分。 - jtlz2