我有一张图片,我想通过给每个像素着色为红、绿或蓝来分割它。我已经为每个像素计算了置信度分数,并希望调整像素的alpha透明度以反映置信度,即低置信度意味着几乎透明。在OpenCV中有没有办法做到这一点?如果没有,有人能建议一个最小侵入式库(C++)吗?
我尝试使用了一个4通道8位的
显示的图像只是完全蓝色(没有透明度),而另一张图像则完全透明。
我尝试使用了一个4通道8位的
Mat
,正如Aurellius所建议的那样,下面是代码:cv::Mat m = cv::Mat(20,20, CV_8UC4);
for(int i = 0; i < m.rows; i++){
for(int j = 0; j < m.cols; j++){
Vec4b& v = m.at<Vec4b>(i,j);
v[0] = 255;
v[1] = 0;
v[2] = 0;
v[3] = 0.5;
}
}
imwrite("alpha.png", m);
namedWindow("m");
imshow("m", m);
waitKey(0);
显示的图像只是完全蓝色(没有透明度),而另一张图像则完全透明。