python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實例
我就廢話不多說了,大家還是直接看代碼吧!
print("thresh =",thresh)
coords = np.column_stack(np.where(thresh > 0))//獲取thresh二值灰度圖片中的白色文字區(qū)域的點
print("coords =",coords)
min_rect = cv2.minAreaRect(coords)//由點集獲取最小矩形(包含中心坐標點、寬和高、偏轉(zhuǎn)角度)
print("min_rec =",min_rect)
box = cv2.boxPoints(min_rect)//獲取最小矩形的4個頂點坐標。
但是通過一下這個繪制矩形函數(shù),畫出來上述的最小矩形與文字區(qū)域偏差很大,但是獲取到的偏轉(zhuǎn)角度是對的。
不明白他們什么關(guān)系啊?
# 根據(jù)四點畫原矩形 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 類中實現(xiàn)提取藍天顏色
我就廢話不多說了,大家還是直接看代碼吧!
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using 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_<Vec3b>::const_iterator it=image.begin<Vec3b>();
Mat_<Vec3b>::const_iterator itend=image.end<Vec3b>();
Mat_<uchar>::iterator itout=result.begin<uchar>();
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:\\Users\\Administrator\\Desktop\\工作\\testp\\boldt.jpg");
if(img.empty())
return;
cdetect.setTargetColor(230,190,130);
imshow("original",img);
imshow("result",cdetect.process(img));
waitKey(0);
}
以上這篇python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決pycharm中opencv-python導入cv2后無法自動補全的問題(不用作任何文件上的修改)
這篇文章主要介紹了解決pycharm中opencv-python導入cv2后無法自動補全的問題(不用作任何文件上的修改),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
在arcgis使用python腳本進行字段計算時是如何解決中文問題的
這篇文章主要介紹了在arcgis使用python腳本進行字段計算時是如何解決中文問題的,需要的朋友可以參考下2015-10-10
用Python實現(xiàn)一個簡單的用戶系統(tǒng)
大家好,本篇文章主要講的是用Python實現(xiàn)一個簡單的用戶系統(tǒng),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Pandas之排序函數(shù)sort_values()的實現(xiàn)
這篇文章主要介紹了Pandas之排序函數(shù)sort_values()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07

