Перейти к содержимому
Compvision.ru

Archi39

Пользователи
  • Количество публикаций

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О Archi39

  • Звание
    Новичок
  1. Распознавание судоку

    Ребят подсобите еще немного, есть ли еще у кого нить, примеры использования для распознавания текста уже готовых OCR библиотек, таких как tesseract-ocr например? Ну или кроме tesseracta, какую еще можно попробовать? Пусть даже не особо мощную в плане поддержки шрифтов, но не такую громоздкую.
  2. Распознавание судоку

    Спасибо за помощь, будем разбираться
  3. Распознавание судоку

    Доброй ночи люди добрые!) В общем я человек не совсем сведущий, а точнее вообще мало что понимающий в библиотеке OpenCV, но так пал жребий, что на раздаче курсовых мне досталось задание с распознаванием текста, а так как у нас преподаватель с фантазией он решил исхитриться и предложил распознать судоку и перевести его с изображения в текстовый файл. После нескольких дней мытарств, я понял что сам точно не справлюсь, вот и обращаюсь к вам за помощью... Алгоритм который возник у меня в голове особой фантазией не отличается: 1. Определение сетки судоку 2. Определение угла наклона (изображение может неровно располагаться) 3. Определение контуров клеток 4. Определение контуров чисел в них 5. Оцифровка Проблемы сразу же начались у меня на 1ом пункте, используя преобразования Хафа, я вроде бы выделил линии сетки, но никак не получается ограничить область судоку, от всего остального мусора на картинке, подскажите как это можно сделать Ну внизу мой код int main(int argc, char* argv[]) { IplImage* src = 0; IplImage* dst=0; IplImage* color_dst=0; char* filename = argc >= 2 ? argv[1] : "c:\\Image1.jpg"; src = cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE); if( !src ){ printf("[!] Error: cant load image: %s \n", filename); return -1; } printf("[i] image: %s\n", filename); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* lines = 0; int i = 0; dst = cvCreateImage( cvGetSize(src), 8, 1 ); color_dst = cvCreateImage( cvGetSize(src), 8, 3 ); cvCanny( src, dst, 50, 200, 3 ); cvCvtColor( dst, color_dst, CV_GRAY2BGR ); lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/360, 50, 50, 5); double perimI = 0; int count=0; CvSeq* LineT=0; for( i = 0; i < lines->total; i++ ){ CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i); cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, CV_AA, 0 ); } cvNamedWindow( "Source", 1 ); cvShowImage( "Source", src ); cvNamedWindow( "Hough", 1 ); cvShowImage( "Hough", color_dst ); cvWaitKey(0); cvReleaseMemStorage(&storage); cvReleaseImage(&src); cvReleaseImage(&dst); cvReleaseImage(&color_dst); cvDestroyAllWindows(); return 0; } Очень нужна ваша помощь
×