如何使用特定像素大小细化图像边框? OpenCV的

时间:2014-03-21 10:35:59

标签: c++ opencv image-processing

我试图通过使大小为16x24的边框像素变为0来缩小图像。我没有尝试获取骨架图像,我只是想减小图像的大小。白色区域。我可以使用的任何方法?请赐教。

这是我试图瘦身的样本图片。它由16x24白色块组成

修改

我试着用这个

cv::Mat img=cv::imread("image.bmp", CV_LOAD_IMAGE_GRAYSCALE);//image is in binary
cv::Mat mask = img > 0; 

Mat kernel = Mat::ones( 16, 24, CV_8U );
erode(mask,mask,kernel);

但我得到的结果是这个

这不是我想要的。我希望保持完全相同的形状,只有16x24像素的白色从边框剃掉。知道出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

你想要Erode你的形象 Another Description

答案 1 :(得分:1)

迟到的答案,但你应该使用一个你想要摆脱的大小加一个的内核来侵蚀你的形象,例如:

Mat kernel = Mat::ones( 24*2+1, 16*2+1, CV_8U );

注意我改变了块的高度和宽度的位置,我只知道Python中的opencv,但我很确定它的顺序与Python中的相同。