歡迎您光臨本站 註冊首頁

python3+openCV 獲取圖片中文本區域的最小外接矩形實例

←手機掃碼閱讀     月球人 @ 2020-06-08 , reply:0

我就廢話不多說了,大家還是直接看代碼吧!

  print("thresh =",thresh)  coords = np.column_stack(np.where(thresh > 0))//獲取thresh二值灰度圖片中的白色文字區域的點  print("coords =",coords)    min_rect = cv2.minAreaRect(coords)//由點集獲取最小矩形(包含中心座標點、寬和高、偏轉角度)  print("min_rec =",min_rect)  box = cv2.boxPoints(min_rect)//獲取最小矩形的4個頂點座標。

 

但是通過一下這個繪製矩形函數,畫出來上述的最小矩形與文字區域偏差很大,但是獲取到的偏轉角度是對的。

不明白他們什麼關係啊?

  #  根據四點畫原矩形  def drawRect(img, pt1, pt2, pt3, pt4, color, lineWidth):    cv2.line(img, tuple(pt1), tuple(pt2), color, lineWidth)    cv2.line(img, tuple(pt2), tuple(pt3), color, lineWidth)    cv2.line(img, tuple(pt3), tuple(pt4), color, lineWidth)    cv2.line(img, tuple(pt1), tuple(pt4), color, lineWidth)

 

有哪路朋友路過,幫一下忙,給指點一二,多謝朋友

附實驗問題截圖:

補充知識:opencv2 3.2 類中實現提取藍天顏色

我就廢話不多說了,大家還是直接看代碼吧!

  #include#include#includeusing namespace std;  using namespace cv;    class ColorDetector{    private:  int maxDist; //最小差距  Vec3b target ; //目標顏色  Mat result;  public:  ColorDetector():maxDist(100),target(0,0,0)  {    }  void setColorDistanceThreshold(int distance) //設置顏色差距的閾值  {  if(distance<0)  distance=0;  maxDist=distance;  }  int getColorDistanceThreshold() const //取得顏色差距的閾值  {  return maxDist;  }    void setTargetColor(uchar blue,uchar green,uchar red) //設置需要檢測的顏色  {  target=Vec3b(blue,green,red);  }    void setTargetColor(Vec3b color)  {  target=color;  }    Vec3b getTargetColor() const  {  return target;  }  Mat process(const cv::Mat &image) ;  int getDistance(const Vec3b &color) ;  };    Mat ColorDetector::process(const cv::Mat &image)   {  result.create(image.rows,image.cols,CV_8U);  Mat_::const_iterator it=image.begin();  Mat_::const_iterator itend=image.end();  Mat_::iterator itout=result.begin();  for ( ; it!= itend; ++it, ++itout)   {  if (getDistance(*it)<maxDist)   {  *itout=255;  }   else   {  *itout=0;  }  }  return result;  }    int ColorDetector::getDistance(const Vec3b &color)   {  return abs(color[0]-target[0])+  abs(color[1]-target[1])+  abs(color[2]-target[2]);  }  void main()  {  ColorDetector cdetect;  Mat img=imread("C:UsersAdministratorDesktop工作	estpoldt.jpg");  if(img.empty())  return;    cdetect.setTargetColor(230,190,130);    imshow("original",img);  imshow("result",cdetect.process(img));  waitKey(0);  }

[月球人 ] python3+openCV 獲取圖片中文本區域的最小外接矩形實例已經有376次圍觀

http://coctec.com/docs/python/shhow-post-237388.html