gpt4 book ai didi

c++ - 如何使用 OpenCV 从名片中删除非文本区域?

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:07 25 4
gpt4 key购买 nike

<分区>

我的目标是从扫描的名片图像中删除任何非文本区域,但我不知道使用 OpenCV 执行该操作的步骤,我已按照此步骤操作但也不知道这是否正确我没有注意到图像有任何变化(非文本区域仍然存在)任何想法都会非常有帮助,谢谢。

1) 将图像转换为灰度

2) 将图像二进制化

3) 反转颜色 (cv::bitwise_not) 以获得白色像素文本

4) 腐 eclipse 图像(cv::erode)

5) 使用canny检测边缘

6) 使用霍夫变换检测文本行(尚未)

代码:

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);

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com