Я запускаю python
программу с openCV
на Raspberry-Pi
.
Я получил супер странно OpenCV Error
. Похоже, это не должно было произойти, но это произошло.
Короче говоря, mask
s обрезается на cv2.inRange()
отличается от того же image
.
Простая структура моего кода:
- обработать
images
в mask
и вычислить тип точности.
- Если
mask
не собрано в (1.), что означает, что mask
из image
все черные (пусто) np.array
, оно пропускает итерацию на exception: Value Error
команда. (потому что min(empty np.array)
в коде araise Value Error
.)
- Итерация (1. ~ 2.) С интервалом времени.
Проблема:
У меня то же самое OpenCV Error
больше двух недель. Это связано с тем, что некоторым кодам parameters
присвоено неправильное значение. Это paramters
в основном рассчитывается из mask
, которое обрезается из image
. Таким образом, я сохранил все image
с и mask
с в процедуре итерации. И обнаружил, что были крошечные mask
, которые не должны быть сделаны в 9th iteration
Проблема в том, что когда я устал подрезать mask
с такими же 9 th image
вручную на моем labtop, это не дает mask
, что означает просто пустое (черное) mask
сделано. но было очень маленькое mask
(белая область), сделанное во время итеративного запуска в Raspberry-Pi
.
Я проверил, есть ли разница между файлами в labtop и R-Pi
, но оба были одинаковыми.
Вот images
:
Сначала вводится изображение для создания Real
экземпляра. Второй создается вручную mask
. Thired создается автоматически mask
в R-Pi
.
image in question">
mask">
mask">
Единственная разница между ПК и R-Pi
заключается в том, что: когда я запускаю код вручную на ПК, я использовал сохраненный image.jpg
из SDcard of R-Pi
. и когда код запускается в R-Pi
итеративно, image
напрямую захватывается из R-pi camera module V2
Я знаю, что это очень странно, и многие думают, что в кодах есть опечатка или что-то не так. Но я страдал за эту проблему в последние две недели. Мне нужна какая-нибудь ветка об этой проблеме.
Есть ли возможные случаи, когда из одного и того же кода в openCV
или R-pi
?
собирается другой результат?
Вот некоторая часть кода. Real
экземпляр создается итеративно в цикле. Строка OpenCV Error
помечена #
. Если кто-то запросит, я буду загружать больше. Загрузка полного кода слишком длинна.
class Real:
__ob_low=np.array([25,100,50]) #27,65,100]) /25,100,50
__ob_high=np.array([33,255,255]) #[45,255,255]) /33,255,255
def __opening(self, mask):
kernel = np.ones((7, 1), np.uint8)
op = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
return op
def __init__(self, img_got,imgname):
img = img_got
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask_temp = cv2.inRange(hsv, self.__ob_low, self.__ob_high)
mask = self.__opening(mask_temp)
maskdir = "/home/pi/capstone/mask/" #
img_name = imgname #
cv2.imwrite(os.path.join(maskdir,img_name),mask) #
if not (np.any(mask)):
print("mask is empty")
array1 = np.transpose(np.nonzero(mask))
array2 = np.nonzero(mask)
ymin=min(array2[1])
ymax=max(array2[1])
xmin=min(array2[0])
xmax=max(array2[0])
self.x = xmax-xmin
self.y = ymax-ymin
self.ratio = self.x/self.y
self.img = img
self.mask = mask[(xmin):(xmax),(ymin):(ymax)]