<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這期分享的是使用opencv提取印章,很多時候我們需要電子版的章,所以今天就帶大家使用程式碼提取出來!
Photoshop雖然強大,但是奈何小編不會使啊,昨天就有一個小夥伴問我能不能幫忙,這不?
PS雖然我不會,但是我會寫程式碼呀!這可難不倒我!安排安排~
(特別提醒:所有愛好設計和喜歡做圖的小夥伴們,切記千萬不要幫著老闆或者朋友PS偽造公章,刑法第280條特別指出,偽造證件印章,是可以追究刑事責任的,違法的事情不要做哦。)
import cv2 import numpy as np class Seal: def __init__(self, img_path): """ 初始化圖片 :param img_path: 原始圖片路徑 """ self.image = cv2.imread(img_path) self.img_shape = self.image.shape self.file_name = img_path.split('.')[0].split('\')[-1] def unify_img_size(self): """ 統一圖片的大小 :return:返回一張未處理的目標圖片 """ img_w = 650 if self.img_shape[1] > 600 else 400 self.image = cv2.resize(self.image, (img_w, int(img_w * self.img_shape[0] / self.img_shape[1])), interpolation=cv2.IMREAD_COLOR) impng = cv2.cvtColor(self.image.copy(), cv2.COLOR_RGB2RGBA) return impng def img_binaryzation(self,hue_image, low_range, high_range, imgpng): th = cv2.inRange(hue_image, low_range, high_range) element = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1)) th = cv2.dilate(th, element) index1 = th == 255 print_img = np.zeros(imgpng.shape, np.uint8) print_img[:, :, :] = (255, 255, 255, 0) print_img[index1] = imgpng[index1] # (0,0,255) return print_img def img_enhance(self): imgpng = self.unify_img_size() hue_image = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV) # 處理影象色調 low_range = np.array([130, 43, 46]) # 設下邊界 high_range = np.array([180, 255, 255]) # 設上邊界 print1 = self.img_binaryzation(hue_image, low_range, high_range, imgpng) low_range = np.array([0, 43, 46]) high_range = np.array([9, 255, 255]) print2 = self.img_binaryzation(hue_image, low_range, high_range, imgpng) imgreal = cv2.add(print2, print1) white_px = np.asarray([255, 255, 255, 255]) (row, col, _) = imgreal.shape for r in range(row): for c in range(col): px = imgreal[r][c] if all(px == white_px): imgreal[r][c] = imgpng[r][c] return imgreal def extension_img(self): """ 邊緣檢測,擷取並輸出結果 :return: """ imgreal = self.img_enhance() # 擴充圖片防止擷取部分 print4 = cv2.copyMakeBorder(imgreal, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0]) print2gray = cv2.cvtColor(print4, cv2.COLOR_RGBA2GRAY) _, grayfirst = cv2.threshold(print2gray, 254, 255, cv2.THRESH_BINARY_INV) element = cv2.getStructuringElement(cv2.MORPH_RECT, (22, 22)) img6 = cv2.dilate(grayfirst, element) c_canny_img = cv2.Canny(img6, 10, 10) contours, hierarchy = cv2.findContours(c_canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) areas = [] for i, cnt in enumerate(contours): x, y, w, h = cv2.boundingRect(cnt) area = w * h ars = [area, i] areas.append(ars) areas = sorted(areas, reverse=True) maxares = areas[:1] x, y, w, h = cv2.boundingRect(contours[maxares[0][1]]) print5 = print4[y:(y + h), x:(x + w)] # 高小於寬 if print5.shape[0] < print5.shape[1]: zh = int((print5.shape[1] - print5.shape[0]) / 2) print5 = cv2.copyMakeBorder(print5, zh, zh, 0, 0, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0]) else: zh = int((print5.shape[0] - print5.shape[1]) / 2) print5 = cv2.copyMakeBorder(print5, 0, 0, zh, zh, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0]) resultprint = cv2.resize(print5, (150, 150)) cv2.imwrite(r'output{}_result.png'.format(self.file_name), resultprint) if __name__ == '__main__': s = Seal(r"src2.jpg") s.extension_img()
原圖
效果圖
到此這篇關於Python Opencv實戰之印章提取的實現的文章就介紹到這了,更多相關Python Opencv印章提取內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45