1
是否有任何函數或算法可以從圖像中刪除點和小/短行。我製作了機器人的公制地圖。我已經使用算法從圖像中創建一個骨架。我需要的是,刪除小/短線,並指出流暢的線條 - 請參閱picture。我是opencv的新手,所以也許這是一個簡單的問題。在opencv中刪除點和小行
有什麼建議嗎?謝謝。
爲了使骨骼我使用此代碼
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
int main(int argc, char** argv)
{
cv::Mat img = cv::imread("test4.png", 0);
cv::Mat skel(img.size(), CV_8UC1, cv::Scalar(0));
cv::Mat temp(img.size(), CV_8UC1);
cv::Mat sub_mat = Mat::ones(img.size(), img.type())*255;
cv::Mat eroded;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,
cv::Size(3, 3));
cv::subtract(sub_mat, img, img);
bool done;
do
{
cv::erode(img, eroded, element);
cv::dilate(eroded, temp, element); // temp = open(img)
cv::subtract(img, temp, temp);
cv::bitwise_or(skel, temp, skel);
eroded.copyTo(img);
done = (cv::countNonZero(img) == 0);
} while (!done);
cv::subtract(sub_mat, skel, skel);
cv:imwrite("skelet.png",skel);
cv::imshow("Skeleton", skel);
cv::waitKey(0);
return 0;
}
你可能想嘗試一些過濾器的圖像。我猜中位數是一個很好的選擇。 – praks411 2013-04-28 10:37:06