opencv识别直线并显示文本
来源:互联网 发布:网络用语拉低了 编辑:程序博客网 时间:2024/06/04 00:26
用opencv 的houghlinep函数识别直线,再在图片上显示直线角度(方位)
源代码如下
#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <math.h>#include <string>using namespace cv;using namespace std;static void help(){ cout << "\nThis program demonstrates line finding with the Hough transform.\n" "Usage:\n" "./houghlines <image_name>, Default is ../data/pic1.png\n" << endl;}int main(int argc, char** argv){ const char* filename = argc >= 2 ? argv[1] : "G:\\DevelopToolLib\\opencv-3.0beta\\opencv\\sources\\samples\\data\\cross2.jpg"; Mat src = imread(filename, 0); if(src.empty()) { help(); cout << "can not open " << filename << endl; return -1; } Mat dst,rdst, cdst;resize(src,rdst,Size(),0.5,0.5);Mat imgroi = rdst(Rect(650,0,100,200)); Canny(imgroi, dst, 50, 200, 3); cvtColor(dst, cdst, COLOR_GRAY2BGR);#if 0 vector<Vec2f> lines; HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 ); for( size_t i = 0; i < lines.size(); i++ ) { float rho = lines[i][0], theta = lines[i][1]; Point pt1, pt2; double a = cos(theta), b = sin(theta); double x0 = a*rho, y0 = b*rho; pt1.x = cvRound(x0 + 1000*(-b)); pt1.y = cvRound(y0 + 1000*(a)); pt2.x = cvRound(x0 - 1000*(-b)); pt2.y = cvRound(y0 - 1000*(a)); line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA); }#else vector<Vec4i> lines; HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 ); for( size_t i = 0; i < lines.size(); i++ ) { Vec4i l = lines[i];long double angle;string text; line( cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, LINE_AA);angle = atan(long double((l[3]-l[1])/(l[2]-l[0])))*180/3.1415926;text = to_string(angle);putText(cdst,text,Point(0,50),FONT_HERSHEY_SIMPLEX,0.5,Scalar(255,0,0),1,8,false); }#endif imshow("source", rdst); imshow("detected lines", cdst); waitKey(); return 0;}
阅读全文
0 0
- opencv识别直线并显示文本
- Opencv鼠标画直线并显示坐标
- OpenCV-009:识别摄像头图像中的指定颜色并显示
- opencv的直线识别(Hough & LSD )
- opencv拟合直线并在屏幕上绘出
- OpenCV:查找图像边缘并画出直线
- OpenCV实现傅里叶变换,通过直线检测矫正文本
- 识别图像方向并显示
- opencv+zxing进行条码识别并解码
- 【OpenCV】加载并显示图片
- opencv载入并显示图片
- Opencv中在图片上显示文本
- opencv中在图片上显示文本
- Opencv中在图片上显示文本
- Opencv中在图片上显示文本
- Java画图(直线,矩形,椭圆),并显示其周长面积
- 自定义进度条,并在中间显示文本
- JavaScript查找文本并突出显示
- NLP入门+实战必读:一文教会你最常见的10种自然语言处理技术(附代码)
- cnn+rnn+attention
- 加速动态磁共振重建的低秩系数分解模型
- Boxes and Balls UVALive
- list
- opencv识别直线并显示文本
- 超励志!这位90后盲人程序员首创奥运历史
- 老玩家才懂的过往,Android系统消失不见的经典设计
- 在 Python 中实现单例模式
- 如何从一双腿判断男人行不行?
- 让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第1篇
- 01:谁考了第k名
- win7下安装vmware+centos6.4视频教程
- ACM动态规划总结