我想从图像中检测并提取字母并创建只包含字母的新图像。我已经在图像上应用了骨架化,之后我想要一些建议。如何使用轮廓或笔划底部检测字母。我正在使用的图像基本上是DVD播放器包装面板,例如,
我用于骨架化的代码是
cvtColor(input, input, CV_BGR2GRAY);
cv::threshold(input, input, 127, 255, cv::THRESH_BINARY);
cv::Mat skel(input.size(), CV_8UC1, cv::Scalar(0));
cv::Mat temp;
cv::Mat eroded;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(3, 3));
bool done;
do
{
cv::erode(input, eroded, element);
cv::dilate(eroded, temp, element); // temp = open(input)
cv::subtract(input, temp, temp);
cv::bitwise_or(skel, temp, skel);
eroded.copyTo(input);
done = (cv::countNonZero(input) == 0);
} while (!done);
骨架化后的输出图像
来源:http://felix.abecassis.me/2011/09/opencv-morphological-skeleton/