作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个轮廓图像效果,它拍摄图像(或视频),找到轮廓,然后将它们作为黑线绘制在原始图像的顶部。我目前正在这样获取大纲:
Mat im = imread(...);
Mat outline;
cvtColor(im, outline, COLOR_BGR2GRAY);
GaussianBlur(outline, outline, Size(15,15),2,2);
Canny(outline, outline, 0, 30, 3);
bitwise_not(outline, outline);
cvtColor(outline,outline, COLOR_GRAY2BGR);
然后我将如何确保所有黑色像素都添加到 im
中?
最佳答案
您可以使用 setTo带着面具。
你应该这样做:
im.setTo(Scalar(0,0,0), ~outline);
意思是:在图像im
中,将outline
中所有黑色的像素设置为黑色(Scalar(0,0,0)
)
或者你可以避免使用bitwise_not
,然后避免再次否定掩码。最终代码如下所示:
Mat im = imread(...);
Mat outline;
cvtColor(im, outline, COLOR_BGR2GRAY);
GaussianBlur(outline, outline, Size(15,15),2,2);
Canny(outline, outline, 0, 30, 3);
im.setTo(Scalar(0,0,0), outline);
// or
// bitwise_not(outline, outline);
// im.setTo(Scalar(0,0,0), ~outline);
imshow("Result", im);
waitKey();
关于c++ - OpenCV 将黑色像素从一个垫子添加到另一个垫子。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36309900/
用 OpenCV(C++) 表示垫子的最佳方法是什么?目前在我的代码中,我使用 vector 的 vector 我需要使用矩阵的好处。 最佳答案 仅限于我的搜索,不幸的是,Opencv-C++ 中没有
我想将 Mat 图像的所有 channel 添加到只有一个和 channel 的 Mat 图像中。我试过这样: // sum up the channels of the image:
我是一名优秀的程序员,十分优秀!