C++ 使用OpenCV转换图像
我刚开始使用OpenCV,我正在测试它,试图从汽车上抓取牌照。我被困在如何着手做那件事上了。例如,我将从如下图像开始: 我希望我的最终结果是:C++ 使用OpenCV转换图像,c++,opencv,C++,Opencv,我刚开始使用OpenCV,我正在测试它,试图从汽车上抓取牌照。我被困在如何着手做那件事上了。例如,我将从如下图像开始: 我希望我的最终结果是: 我知道如何使用adaptivethreshold,我在步骤中感到困惑的事情需要从1到2。谢谢你的帮助 硬编码阈值太多,但这是否有效 #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv; int main( in
我知道如何使用adaptivethreshold,我在步骤中感到困惑的事情需要从1到2。谢谢你的帮助 硬编码阈值太多,但这是否有效
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main( int argc, char** argv )
{
Mat src = imread( "C:/test/single/license.jpg");
cvtColor(src,src,CV_BGR2GRAY);
blur( src, src, Size(3,3) );
Canny( src, src, 130, 130*4, 3 );
imshow( "edge", src );
GaussianBlur(src,src,Size(3,3),60);
threshold(src,src,0,255,CV_THRESH_OTSU);
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(src, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
Mat todraw=Mat::zeros(src.size(), CV_8UC1);
for(size_t i = 0; i < contours.size(); i++)
{
double area = fabs(contourArea(Mat(contours[i])));
if(area<600)
drawContours(todraw,contours,i,Scalar(255),-1);
}
imshow( "plate", todraw );
waitKey(0);
return 0;
}
#包括“opencv2/imgproc/imgproc.hpp”
#包括“opencv2/highgui/highgui.hpp”
使用名称空间cv;
int main(int argc,字符**argv)
{
Mat src=imread(“C:/test/single/license.jpg”);
CVT颜色(src、src、CV_bgr2灰色);
模糊(src,src,大小(3,3));
Canny(src,src,130130*4,3);
imshow(“边缘”,src);
GaussianBlur(src,src,大小(3,3),60);
阈值(src、src、0255、CV_THRESH_OTSU);
矢量等值线;
向量层次;
findContours(src、等高线、层次结构、CV_RETR_外部、CV_链_近似_简单);
Mat todraw=Mat::zeros(src.size(),CV_8UC1);
对于(size_t i=0;i 如果(区域这正是您想要的-
这本书出自《精通OpenCV》一书。它将车牌分割,并使用基本的OCR识别字符。你是如何得到这个结果的?