招聘网站策划书,美术网站建设方案,怎样进行网络推广效果更好,动漫设计与制作好就业吗在我们的日常生活中#xff0c;所碰到的图像往往都有一定的倾斜。那么#xff0c;如何用OpenCV来获取图像的旋转角度呢#xff1f; 我们以下面的图片为例#xff0c;简单介绍如何用OpenCV来获取图像的旋转角度。可以看到#xff0c;该图像存在着许多噪声#xff0c;且…在我们的日常生活中所碰到的图像往往都有一定的倾斜。那么如何用OpenCV来获取图像的旋转角度呢 我们以下面的图片为例简单介绍如何用OpenCV来获取图像的旋转角度。可以看到该图像存在着许多噪声且是彩色图片因此需要对图像做预处理。预处理图像的预处理包括去除边缘去除噪声(两条灰色线)滤波二值化等具体处理的Python代码如下# -*- coding: utf-8 -*-import cv2imagepath F://CHN_Char/4.pngimg cv2.imread(imagepath, 1)# 将图片的边缘变为白色height, width img.shape[0:2]for i in range(width):img[0, i] [255]*3img[height-1, i] [255]*3for j in range(height):img[j, 0] [255]*3img[j, width-1] [255]*3# 去掉灰色线(即噪声)for i in range(height):for j in range(width):if list(img[i,j]) [204,213,204]:img[i,j][255]*3# 把图片转换为灰度模式gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 中值滤波blur cv2.medianBlur(gray, 3) # 模板大小3*3# 二值化ret,thresh cv2.threshold(blur, 200, 255, cv2.THRESH_BINARY)# 保存图片cv2.imwrite(F://CHN_Char/char_after_bin.png, thresh)预处理后的图片如下可以看到预处理后的图像基本不含噪声且是黑色图片这样我们就可以进行后续操作了。获取旋转角度对于上述预处理后的图片可以用OpenCV的最小外接矩形方法(minAreaRect())来操作该方法会返回最小外界矩形的中心点左边矩形宽度、高度以及旋转角度。因为图像中只有一个文字因此包含该文字的最小外接矩形返回的角度就是图像的旋转角度(当然也有可能是负值)。 完整的Python代码如下# -*- coding: utf-8 -*-import cv2import numpy as npimagepath F://CHN_Char/char_after_bin.pngimg cv2.imread(imagepath, -1)image, contours, _ cv2.findContours(img, 2, 2)for cnt in contours:# 最小外界矩形的宽度和高度width, height cv2.minAreaRect(cnt)[1]if width* height 100:# 最小的外接矩形rect cv2.minAreaRect(cnt)box cv2.boxPoints(rect) # 获取最小外接矩形的4个顶点box np.int0(box)if 0 not in box.ravel():绘制最小外界矩形for i in range(4):cv2.line(image, tuple(box[i]), tuple(box[(i1)%4]), 0) # 5# 旋转角度theta cv2.minAreaRect(cnt)[2]if abs(theta) 45:print(图片的旋转角度为%s.%theta)angle theta# 仿射变换,对图片旋转angle角度h, w img.shapecenter (w//2, h//2)M cv2.getRotationMatrix2D(center, angle, 1.0)rotated cv2.warpAffine(img, M, (w, h), flagscv2.INTER_CUBIC, borderModecv2.BORDER_REPLICATE)# 保存旋转后的图片cv2.imwrite(F://CHN_Char/after_rotated.png, rotated)输出结果如下图片的旋转角度为-23.629377365112305.得到的图像如下在上述Python代码中先是利用minAreaRect()获取图像中的最小外接矩形加上一定的筛选条件(如矩形的面积大于100旋转角度小于45度等)就能得到包含文字的最小外界矩形其旋转角度就是整个图像的旋转角度。识别图像中的文字有了旋转后的图像我们不妨利用Tesseract-OCR软件来识别图像中的文字完整的Python代码如下import pytesseractimport cv2# tesseract.exe所在的文件路径pytesseract.pytesseract.tesseract_cmd C://Program Files (x86)/Tesseract-OCR/tesseract.exeimagepath F://CHN_Char/after_rotated.pngimage cv2.imread(imagepath, -1)text pytesseract.image_to_string(image, langchi_sim, config-psm 10)print(Tesseract-OCR的识别结果为: %s.%text)输出结果为Tesseract-OCR的识别结果为: 知.因此我们得到的图像的旋转角度是正确的。当然借用以上方法还可以识别以下图片中的文字总结本次获取图像的旋转角度是利用了图像中只有一个文字而包含该文字的最小外接矩形的旋转角度就是图像的旋转角度。这只是获取图像旋转角度的一种方式当然还会有其他获取图像旋转角度的方法后续还会继续介绍欢迎大家交流~~注意本人现已开通微信公众号 轻松学会Python爬虫(微信号为easy_web_scrape) 欢迎大家关注哦~~