Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用特定像素大小细化图像边框?OpenCV_C++_Opencv_Image Processing - Fatal编程技术网

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

C++ 如何使用特定像素大小细化图像边框?OpenCV,c++,opencv,image-processing,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(

我试图通过使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像素的白色。知道哪里出了问题吗?

你想改变你的形象。

请稍后回答,但您应该使用一个内核来侵蚀您的图像,该内核的大小是您想要去除的大小的两倍,加上1,如:

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

请注意,我更改了块的高度和宽度的位置,我只知道opencv来自Python,但我非常确定其顺序与Python中的顺序相同。

我正在尝试减小白色周围区域的大小。我不能从腐蚀中得到确切的形状。我的内核是否定义错误?我更新了问题。请查收。谢谢你说的16x24像素到底是什么意思?侵蚀实际上会填补图像中的白洞如果你想得到准确的效果,那么我担心侵蚀不是解决方案。白色像素是由16x24像素块构成的。表示每个16x24像素块内的值具有相同的值。有更好的收缩方法吗?我不确定还有其他方法。也许你可以试着玩你的侵蚀内核。好的。谢谢你的帮助