如果我有像这样的面具
我有一个图像(大小与面具相同)就像
我想突出显示图像中的蒙版。如果我用其他语言,我只是
正如你所看到的,结果图像有一个透明红展示面具。我希望在 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;
}
但正如你所看到的,我在中使用了 alpha 值Scalar
,但它不是一个透明红.
也许这是由于srcImg
只有3个频道。我对此有两个问题
- 如何用透明的红色突出显示蒙版(即使图像只有 3 个通道)?
- 我必须画画
circle
一个像素一个像素地做这件事?
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main(int argc, char** argv)
{
Mat srcImg = imread("image.png");
Mat mask = imread("mask.png", IMREAD_GRAYSCALE) > 200;
Mat red;
cvtColor(mask, red, COLOR_GRAY2BGR);
red = (red - Scalar(0, 0, 255)) / 2;
srcImg = srcImg - red;
imshow("image", srcImg);
waitKey();
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)