gpt4 book ai didi

c++ - opencv 在轮廓内裁剪一部分图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:00 24 4
gpt4 key购买 nike

enter image description here

我刚刚开始学习 OpenCv。我想裁剪图像的一部分,即被红色圆圈包围的文本。你们能帮我找到解决方案吗,比如我应该遵循哪些方法来裁剪它。我尝试了一些方法,将红色圆圈裁剪并保存在垫子中。

while(1)
{
capture>>img0;
imshow("original", img0);
imwrite("original.jpg", img0);
cv::inRange(img0,cv::Scalar(0,0,100),cv::Scalar(76,85,255),img1);
imshow("threshold.jpg", img1);
imwrite("threshold.jpg", img1);
// find the contours
vector< vector<Point> > contours;
findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

Mat mask = Mat::zeros(img1.rows, img1.cols, CV_8UC1);

drawContours(mask, contours, -1, Scalar(255), CV_FILLED);

Mat crop(img0.rows, img0.cols, CV_8UC3);

crop.setTo(Scalar(255,255,255));

img0.copyTo(crop, mask);

normalize(mask.clone(), mask, 0.0, 255.0, CV_MINMAX, CV_8UC3);

imshow("mask", mask);
imshow("cropped", crop);

imwrite("mask.jpg", mask);
imwrite("cropped.jpg", crop);

if(waitKey(30)=='27')
{
break;
}
}
return 0;`[original image[cropped image][1]`

我想从这张图片中单独裁剪一段文字。请通过与我分享要遵循的方法或步骤来帮助我找到解决方案。

提前致谢

最佳答案

如果你想单独提取文本,你可以试试这个:-

drawContours(mask, contours, -1, Scalar(255), CV_FILLED);
vector<Rect> boundRect( contours.size() );
for(int i=0;i<contours.size();i++)
{
boundRect[i] = boundingRect(contours[i]);//enclose in Rect
Mat ROI,ROI_txt;
if(boundRect[i].width>30 && boundRect[i].height>30)//ignore noise rects
{
ROI=img0(boundRect[i]);//extract Red circle on ROI
inRange(ROI,Scalar(0,0,0),cv::Scalar(50,50,50),ROI_txt);
//black colour threshold to extract black text
}
}

关于c++ - opencv 在轮廓内裁剪一部分图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358746/

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