OpenCV-Python träffbildsanalys

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Shimano
Inlägg: 40
Blev medlem: 22 april 2019, 13:13:05

Re: OpenCV-Python träffbildsanalys

Inlägg av Shimano »

Superjobb med scriptet som "vänder upp" bilden! Av någon anledning lyckas jag inte köra det själv, får felkoden men förstår inte riktigt varför exftersom approx är tydligt definierad på rad 26...

File "test.py", line 32, in <module>
pts1 = np.float32(approx)
NameError: name 'approx' is not defined

Kod: Markera allt

#!/usr/bin/python

# Standard imports
import cv2
import numpy as np;
import math

# Read image
img = cv2.imread("1.jpg",1)
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_board = np.array([0,0,230])
upper_board = np.array([180,255,255])

mask = cv2.inRange(hsv,lower_board, upper_board)
result = cv2.bitwise_and(img,img,mask = mask)
imgray = cv2.cvtColor(result,cv2.COLOR_BGR2GRAY)

im2, contours, hierarchy = cv2.findContours(imgray,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

for i, contour in enumerate(contours):
	area = cv2.contourArea(contour)
	if area <= 10000:
		continue
	epsilon = 0.1*cv2.arcLength(contour,True)
	approx = cv2.approxPolyDP(contour,epsilon,True)
	cv2.drawContours(img,[approx],0,(0,0,255),2)
	print(approx)
pts1 = np.float32(approx)
pts2 = np.float32([[0, 0], [0, 500], [750, 500], [750, 0]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
warped = cv2.warpPerspective(img, matrix, (750, 500))
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: OpenCV-Python träffbildsanalys

Inlägg av Krille Krokodil »

Jag trodde inte det skulla fungera men det gör det när jag kör det.

Testa att ovanför for-loopen definera den variabeln, ex. approx=0
Shimano
Inlägg: 40
Blev medlem: 22 april 2019, 13:13:05

Re: OpenCV-Python träffbildsanalys

Inlägg av Shimano »

Då får jag följande fel istället... Jag måste nog börja försöka sätta mig in i programmeringen på ett djupare sätt för att ro detta i hamn.

Kod: Markera allt

 File "test.py", line 33, in <module>
    matrix = cv2.getPerspectiveTransform(pts1, pts2)
TypeError: src is not a numpy array, neither a scalar
Johanb
Inlägg: 3406
Blev medlem: 26 mars 2006, 22:26:12
Ort: Smedjebacken

Re: OpenCV-Python träffbildsanalys

Inlägg av Johanb »

Vad behöver jag och hur gör jag för att testa?
Shimano
Inlägg: 40
Blev medlem: 22 april 2019, 13:13:05

Re: OpenCV-Python träffbildsanalys

Inlägg av Shimano »

Jag använde nedanstående guide för att installera programmen(Python, OpenCV/Numpy/Matplot) på min Windows-dator. Som utvecklingsmiljö anvnänder jag Sublime(underlättar eftersom Python är petigt med tabbarna).

https://solarianprogrammer.com/2016/09/ ... n-windows/
Sado
Inlägg: 84
Blev medlem: 6 april 2007, 14:39:33
Ort: Svealand

Re: OpenCV-Python träffbildsanalys

Inlägg av Sado »

Vilken bild använder ni för att testa med? Jag provade solglasögonbilden men fick not enough values to unpack från findContours().
Shimano
Inlägg: 40
Blev medlem: 22 april 2019, 13:13:05

Re: OpenCV-Python träffbildsanalys

Inlägg av Shimano »

Använd denna bilden :)
Bild

Det verkar vara något som gör att Pythonskripten med OpenCV funkar på vissa system men inte andra, jag förstår inte riktigt varför. Kanske har det något med bytet från Python 2 till 3?
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: OpenCV-Python träffbildsanalys

Inlägg av Krille Krokodil »

Arbeta stegvis, Ex. så kan man plotta histogram utklipp av HSV-bilden för att se vilka värden på
färgerna man ska maska. Finns kod på det om man söker.

I Mvtec Halcon som jag jobbar i så kan man analysera alla bilder och konturer som skapas i programmet,
tyvärr finns där väl inget IDE till OpenCV som är nära så bra. Tråkigt, OpenCV är i grunden väldigt bra, det
hade förtjänat ett bättre IDE. Mvtec gör väldigt bra dokumentation och videos, det kan vara värt att titta på
deras exempel och sedan försöka överföra metodiken till OpenCV.

HDevelop Tutorial 01: GUI and Navigation - MVTec HALCON


https://www.mvtec.com/products/halcon/documentation/
Shimano
Inlägg: 40
Blev medlem: 22 april 2019, 13:13:05

Re: OpenCV-Python träffbildsanalys

Inlägg av Shimano »

Jag lyckades få ihop en kod som fungerar, med krilles modell. Kolla den här youtube videon där förklaras dom olika stegen https://www.youtube.com/watch?v=PtCQH93GucA

Kod: Markera allt

#!/usr/bin/env python

import cv2
import numpy as np


im_src = cv2.imread('1.jpg')
frame = cv2.imread('1.jpg')

cv2.circle(im_src, (230,85),5,(0,0,255),-1)
cv2.circle(im_src, (205,680),5,(0,0,255),-1)
cv2.circle(im_src, (995,650),5,(0,0,255),-1)
cv2.circle(im_src, (910,145),5,(0,0,255),-1)

pts1 = np.float32([[230,85],[910,145],[205,680],[995,650]])
pts2 = np.float32([[0,0],[700,0],[0,500],[700,500]])

matrix = cv2.getPerspectiveTransform(pts1,pts2)
result = cv2.warpPerspective(frame, matrix, (700,500))

cv2.imshow("Frame", result)
cv2.imshow("Source Image", im_src)
 
cv2.waitKey(0)
Bild
Skriv svar