Python OpenCV 将同心圆环填充为实心圆
生活随笔
收集整理的這篇文章主要介紹了
Python OpenCV 将同心圆环填充为实心圆
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 應(yīng)用概覽
- 測試代碼
- 效果圖
- 參考引用
應(yīng)用概覽
近期在測試設(shè)計的帶方位點的圓點特征提取算法與傳統(tǒng)的OpenCV的圓點提取算法,在標(biāo)定應(yīng)用上精度的差異,但是遇到了一個問題———加工廠商制作實心圓點標(biāo)定板時搞錯需求了,于是我擁有了兩塊如圖所示的帶方位點的圓點標(biāo)定板。。。
除此之外還有一個問題在于,如果我要橫向?qū)Ρ葍煞N圖案對于標(biāo)定精度的影響,標(biāo)定板的擺放姿態(tài)需要盡可能一致,因此需要通過圖像處理的方式將圖中的同心圓環(huán)進(jìn)行填充,得到實心圓點
測試代碼
代碼為批量處理腳本,處理邏輯是現(xiàn)將圖片進(jìn)行自適應(yīng)閾值處理,之后提取輪廓,對存在父輪廓的邊緣(同心圓內(nèi)圓)進(jìn)行填充處理,實現(xiàn)將同心圓轉(zhuǎn)換為實心圓點,該方法可以用在類似需要填充圖形內(nèi)部的需求場景中。
import cv2 as cv import numpy as np import os# 輸入圖像地址 input_data_directory = "./data" # 輸出圖像地址 output_data_directory = "./output"array_of_img = [] # 批量文件讀入函數(shù) def read_directory(directory_name):for filename in os.listdir(r"./"+directory_name):array_of_img.append(filename)read_directory(input_data_directory) # 圖像處理部分 for filename in array_of_img:img_gray = cv.imread(input_data_directory + '/' + filename, 0)_, thresh = cv.threshold(img_gray, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)contours, hierarchy = cv.findContours(thresh, cv.RETR_CCOMP, 2)# 找到內(nèi)層輪廓并填充# hierarchy的形狀為(1,6,4),使用np.squeeze壓縮一維數(shù)據(jù),變成(6,4)hierarchy = np.squeeze(hierarchy)for i in range(len(contours)):# 存在父輪廓,說明是里層if (hierarchy[i][3] != -1):# -1表示填充cv.drawContours(img_gray, contours, i, (0, 0, 0), -1)cv.imwrite(output_data_directory + '/' + filename, img_gray)print("轉(zhuǎn)換完成")效果圖
參考引用
總結(jié)
以上是生活随笔為你收集整理的Python OpenCV 将同心圆环填充为实心圆的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第三方支付-分账接口对接
- 下一篇: PostgreSQL定时删除表数据