целта ми е да премахна всяка нетекстова област от сканирано изображение на визитна картичка, но не знам стъпките за извършване на това с помощта на OpenCV, следвах тези стъпки, но не знам дали това е правилното или не, също не знам не забелязвам промяна в изображението (остават области без текст) всяка идея ще бъде много полезна, благодаря.
1) конвертирайте изображението в сива скала
2) бинарно изображение
3) обърнете цветовете (cv::bitwise_not), за да имате текст с бели пиксели
4) Ерозира изображението (cv::erode)
5) откриване на ръбове с помощта на canny
6) откриване на текстови редове с помощта на hough transform (все още не)
код:
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);
Опитвам се да изпратя избрани редове и колони на grdiview по имейл и за това използвам тази функция, за да го направя
и за изпращане на имейл изпращам имейл като този
Проблемът е, че когато е зададен имейл, той изпраща цялостния мрежов изглед към имейл като това изображение
В това има два реда, избрани с квадратче за отметка, а също така искам да пропусна някои колони като
- person karlphillip   schedule 21.04.2012category
nature
, което означава, че искам да изпратя само избрани колони в имейл. Но нямам никаква идея как да управлявам това, така че моля, дайте някаква идея как да постигна това.