Wie zu verwenden OpenCV, um zu entfernen der nicht-text-Bereiche von einer Visitenkarte?

mein Ziel ist es, entfernen Sie alle nicht-text-Bereich aus einer gescannten Visitenkarte Bild aber ich weiß nicht, die Schritte auszuführen, die mithilfe von OpenCV , ich habe diese Schritte aber nicht wissen, ist er der richtige oder nicht, auch ich nicht feststellen, keine änderung im Bild (nicht text-Bereichen bleibt) jede Idee wird sehr hilfreich sein,danke.

1) konvertieren Sie das Bild in Graustufen

2) binaries das Bild

3) invertieren die Farben (cv::bitwise_not), um einen weißen Pixel text

4) Nagen an dem Bild(cv::erode)

5) Kanten mit canny

6) erkennt text lines mit hough-Transformation (noch nicht)

code:

cv::Mat greyMat = [self.imageView.image CVGrayscaleMat];
cv::Mat bwMat;
cv::threshold(greyMat, bwMat, 128, 255, CV_THRESH_BINARY);
cv::bitwise_not(bwMat, bwMat);
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(2, 1));
cv::erode(bwMat, bwMat, element);
std::vector<cv::Point>points;
cv::Mat_<uchar>::iterator it=bwMat.begin<uchar>();
cv::Mat_<uchar>::iterator end=bwMat.end<uchar>();
for (; it!=end; ++it) 
if (*it) 
points.push_back(it.pos());
cv::RotatedRect box=cv::minAreaRect(cv::Mat(points));
plImage* smothedImage=new IplImage(bwMat); 
cvSmooth(smothedImage, smothedImage);
cvCanny(smothedImage, smothedImage, 10, 100);
  • Was haben Sie versucht? Können Sie versuchen, schmalen deine Frage auf etwas bestimmtes, sonst denke ich, dass dies geschlossen werden wird, für "nicht konstruktiv"
  • ich aktualisiert meine Frage
  • Bitte geben Sie ein Beispiel-Bild, wie gut, @PatrickJones
InformationsquelleAutor chostDevil | 2012-04-21
Schreibe einen Kommentar