#python #opencv
#питон #opencv
Вопрос:
Я использовал приведенный ниже код для поиска количества сигарет на изображении ниже, используя opencv python, но он не работал. Только этот код находит только некоторые места. я не знаю, в чем проблема .. пожалуйста, помогите мне
import numpy as np
import cv2
from PIL import Image
import sys
Path='D:Artificial intelligencePhyton'
filename='Test.png'
img = cv2.imread('D:Artificial intelligencePhytonTest.png')
img1 = cv2.imread('D:Artificial intelligencePhytonTest.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)
img[thresh == 255] = 0
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
erosion = cv2.erode(img, kernel, iterations = 1)
cv2.imwrite('D:Artificial intelligencePhytonTest112.png',erosion)
def findcircles(img,contours):
minArea = 300;
minCircleRatio = 0.5;
for contour in contours:
(x,y),radius = cv2.minEnclosingCircle(contour)
center = (int(x),int(y))
radius = int(radius)
if radius > 5:
continue;
cv2.circle(img1, center, 1, (191, 255, 0), 2)
cv2.imwrite('D:Artificial intelligencePhytonTest11234.png',img1)
img = cv2.imread("D:Artificial intelligencePhytonTest112.png")
cv2.imwrite('D:Artificial intelligencePhytonorg.png',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,threshold = cv2.threshold(gray, 199, 255,cv2.THRESH_BINARY_INV)
cv2.imwrite('D:Artificial intelligencePhytonthreshold.png',threshold)
blur = cv2.medianBlur(gray,7)
cv2.imwrite('D:Artificial intelligencePhytonblur.png',blur)
laplacian=cv2.Laplacian(blur,-1,ksize = 5,delta = -50)
cv2.imwrite('D:Artificial intelligencePhytonlaplacian.png',laplacian)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(7,7))
dilation = cv2.dilate(laplacian,kernel,iterations = 1)
cv2.imwrite('D:Artificial intelligencePhytondilation.png',dilation)
result= cv2.subtract(threshold,dilation)
cv2.imwrite('D:Artificial intelligencePhytonresult.png',result)
contours, hierarchy = cv2.findContours(result,cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)
findcircles(gray,contours)
Изображение :
введите описание изображения здесь
Мой результат:
Комментарии:
1. почему вы рассылаете такие теги, как c # и asp.net ?!
2. глядя на исходную картинку и результат … Тенденция явно находится в середине картинки — почему? потому что есть более сильный контраст, который теряется в сторону из-за угла перспективы. Как это исправить, я не знаю, что я пришел с C #, поскольку вы пометили это как C #, и это явно вопрос opencv и python!
3. Границы кругов в углу изображения не такие четкие, как те, что посередине. Попробуйте точно настроить параметры для различных функций cv.