我想在圖片中找到粉紅色的木頭。該代碼正確執行此操作,但在某些影像(例如下圖)中,它正確找到了粉紅色棒,但錯誤地找到了其他幾個框。事實上,它不是找到一個坐標(x,y,w,h),而是誤診了幾個坐標。
下圖很清晰
import numpy as np
imagePath = "core4.jpg"
import cv2
from cv2 import *
im = cv2.imread(imagePath)
im = cv2.bilateralFilter(im,9,75,75)
im = cv2.fastNlMeansDenoisingColored(im,None,10,10,7,21)
hsv_img = cv2.cvtColor(im, cv2.COLOR_BGR2HSV) # HSV image
COLOR_MIN = np.array([130,0,220],np.uint8)
COLOR_MAX = np.array([170,255,255],np.uint8)
frame_threshed = cv2.inRange(hsv_img, COLOR_MIN, COLOR_MAX) # Thresholding image
imgray = frame_threshed
ret,thresh = cv2.threshold(frame_threshed,127,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
print(x,y,w,h)
cv2.rectangle(im,(x,y),(x w,y h),(0,255,0),2)
cv2.imwrite("core4_cropped.jpg", im)
輸入
輸出(檢測到錯誤的幾個框)
它沒有找到一個坐標 (x,y,w,h),而是誤診了幾個坐標邊界框。
57 2410 113 148
153 2534 4 6
136 2526 15 13
101 2525 3 3
102 2520 3 7
103 2519 3 3
145 2488 3 5
134 2484 7 9
129 2481 8 12
155 2454 6 7
141 2452 7 9
148 2451 7 9
136 2448 3 3
135 2446 3 4
109 1416 4 3
106 1414 1 1
此錯誤的原因可能是什么?
注意:數字寫在粉紅色的木頭上。
uj5u.com熱心網友回復:
我會降低粉紅色的閾值或對 img 應用模糊以破壞所有小細節,例如本例中的數字。此外,我會建議像這樣使用“旋轉矩形”。它將顯示精確的矩形并旋轉它。在您的情況下,您使用的是“直邊界矩形”。您可以在此處了解更多資訊。滾動到 7.b。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372309.html
標籤:Python 图片 opencv 图像处理 计算机视觉
上一篇:為什么skimagewhite_tophat與手動實作的頂帽不同?
下一篇:卷積后最大池化層
