我是OpenCV的新手,正在尋找使用計算機視覺讀取傳統溫度計的最佳方法。任何指導,一般方法,示例代碼?感謝您對這個非常廣泛的問題的任何考慮。如何使用OpenCV讀取傳統溫度計
因此,我想更具體地說,您如何縮小輪廓到您感興趣的區域,例如只在附加圖像中圍繞數字的邊框。感謝您的任何考慮。 [1]:http://eofdreams.com/photo/thermometer/05/ 「溫度計」
import cv2
import numpy as np
img = cv2.imread('thermometer.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 11, 17, 17)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
contours,hierarchy = cv2.findContours(edges,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
keys = [i for i in range(48,58)]
#cnts = sorted(contours, key = cv2.contourArea, reverse = True)[:10]
for cnt in contours:
#if cv2.contourArea(cnt)>50:
[x,y,w,h] = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
roi = img[y:y+h,x:x+w]
roismall = cv2.resize(roi,(10,10))
cv2.imshow('norm',img)
key = cv2.waitKey(0)
cv2.imwrite('houghlines3.jpg',edges)
[tesseract](https://code.google.com/p/python-tesseract/) – Fabricator
您最好縮小這個範圍,否則它會因太寬泛而關閉。想要閱讀的溫度計圖像會有所幫助,以及您嘗試過的一些想法以及爲什麼它們不起作用。 – Bull
多少手動工作是好的?如果視圖是靜態的,用戶可能會標記溫度計的上限和下限,並將溫度值設置爲這些邊界?在這種情況下,閱讀溫度計的任務就會減少到讀取「紅線」的位置,這可以通過HSV顏色分類來完成。 – Micka