У меня есть карта, которую я разбиваю на плитки 3 раза, а затем применяю cv2 findcontours. Вот код, который я использую:
rr,thetar,phir,br520=hdf.rdhdf_3d('/blahblah/testing/br000520.hdf') # загрузка данных br520_r1p05=br520[:,:,61] trp_br520=np.tile(br520_r1p05,3) # мозаика данных ret, th = cv.threshold(trp_br520, 0, 255, cv.THRESH_BINARY_INV) th=th.astype(np.uint8) контуры, иерархия = cv.findContours(th, cv.RETR_LIST, cv.CHAIN_APPROX_NONE) conts=sorted(контуры, ключ=len) # постройте это: fig,ax=plt.subplots(figsize=(10,4)) ax.imshow(trp_br520,cmap='seismic',vmin=-10,vmax=10) ax.set_title('Утроенный массив') цвета = plt.cm.plasma(np.linspace(0,1,len(conts))) для меня в диапазоне(len(list(conts))): ax.scatter(np.asarray(conts)[:,0,1],np.asarray(conts)[:,0,0],color=colors,s=5) plt.tight_layout() В результате получится следующее изображение:
Очевидно, что несмотря на то, что ему был передан один массив с размерами (180,1080), он принимает контуры исходного изображения 3 раза. Я здесь в тупике, как я могу заставить cv2 принять контуры всего массива? Заранее спасибо!
У меня есть карта, которую я разбиваю на плитки 3 раза, а затем применяю cv2 findcontours. Вот код, который я использую:
rr,thetar,phir,br520=hdf.rdhdf_3d('/blahblah/testing/br000520.hdf') # загрузка данных br520_r1p05=br520[:,:,61] trp_br520=np.tile(br520_r1p05,3) # мозаика данных ret, th = cv.threshold(trp_br520, 0, 255, cv.THRESH_BINARY_INV) th=th.astype(np.uint8) контуры, иерархия = cv.findContours(th, cv.RETR_LIST, cv.CHAIN_APPROX_NONE) conts=sorted(контуры, ключ=len) # постройте это: fig,ax=plt.subplots(figsize=(10,4)) ax.imshow(trp_br520,cmap='seismic',vmin=-10,vmax=10) ax.set_title('Утроенный массив') цвета = plt.cm.plasma(np.linspace(0,1,len(conts))) для меня в диапазоне(len(list(conts))): ax.scatter(np.asarray(conts[i])[:,0,1],np.asarray(conts[i])[:,0,0],color=colors[i],s=5) plt.tight_layout() В результате получится следующее изображение:
[img]https://i.stack.imgur.com/N0Ppx.png[/img]
Очевидно, что несмотря на то, что ему был передан один массив с размерами (180,1080), он принимает контуры исходного изображения 3 раза. Я здесь в тупике, как я могу заставить cv2 принять контуры всего массива? Заранее спасибо!
Я печатаю контур из CV2.findContours. Он распечатывает что -то подобное:
[ ]
Что я хочу получить 370 и хранить его в переменной.
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
Я наткнулся на два способа преобразования изображения в Greyscale, и я хочу понять разницу между ними:
# Method 1
image = cv2.imread('image.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Мне нужно правильно очертить как можно больше засыпанных раствором камней в уличной зоне. Приведенный ниже код правильно обнаруживает некоторые из них на изображении камней «in.jpg», но неясно, почему многие из них остаются необнаруженными или...