Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Människor kan urskilja cirka 10 miljoner färger. För att uppfatta dem behöver du något som kallas en färgpalett. En färgpalett innehåller verktygen för att visa hela skalan av färger som är synliga för det mänskliga ögat. I den verkliga världen använder du dem för att skapa estetiska mönster på papper medan du digitalt använder dem för att lägga till färg till skärmelement.

I slutändan kodar din dator alla olika nyanser du ser på skärmen med ett visst format. Med Python kan du utveckla en RGB-kodad färgpalett på bara några rader kod tack vare OpenCV och NumPy-modulen.

OpenCV och NumPy-modulen

Du kan analysera bilder och videor med OpenCV. Den är gratis, öppen källkod, enkel att använda och packad med användbara bibliotek. Dessa tillhandahåller tekniker för att klassificera, lokalisera och spåra objekt i både två och tre dimensioner. För att installera OpenCV i din miljö, öppna en terminal och kör:

instagram viewer
pip installera opencv-python

NumPy-modulen är ett annat populärt bibliotek som du kommer att se många Python-program använda. NumPy – numerisk Python – är en modul som du kan använda för dataanalys och vetenskaplig beräkning. Det tillhandahåller n-dimensionella arrayobjekt såväl som matematiska operationer som hjälper till att manipulera dessa arrayer.

För att installera NumPy i din miljö, kör:

pip installera numpy

I allmänhet kommer du att använda OpenCV för att bearbeta bilder med tekniker som kantdetektering. Du kan sedan använda NumPy för att utföra dataanalys på den bearbetade bilden. Genom att använda denna kombination kan du skapa och avkoda en QR-kod, klassificera bilder, utföra optisk teckenigenkänning och bygga videoövervakningssystem som kan upptäcka rörelser och spåra individer i realtid.

Hur man bygger en färgpalett med Python

Följ dessa steg för att bygga en färgpalett med OpenCV och NumPy-modulen i Python.

Du kan hitta källan till färgpalett med Python i denna GitHub förvaret.

Börja med att importera OpenCV- och NumPy-modulerna. Definiera en funktion som heter emptyfunction() som innehåller godkäntangivelsen. Godkännangivelsen fungerar som en platshållare för kod du kan skriva i framtiden. Detta är särskilt användbart med funktioner som createTrackbar, som du kommer att använda senare. Det kräver en giltig återuppringningsfunktion och du kan skicka emptyFunction som platshållare tills vidare.

importera cv2
importera numpy som np

deftomfunktion():
passera

Generera en tredimensionell array med storleken 512 * 512 * 3 med datatypen uint8 med hjälp av NumPy's noll() fungera. Varje array kommer att bestå av 512 kolumner och 512 rader. uint8 representerar ett heltal utan tecken, så programmet fyller matrisen med nollor.

bild = np.zeros((512, 512, 3), np.uint8)

Ställ in namnet på fönstret som programmet ska visa och skicka det till namedWindow() funktion för att skapa ett fönster:

fönsternamn = "OpenCV Color Palette"
cv2.namedWindow (windowName)

Skapa sedan tre spårstaplar för de röda, gröna och blå färgkomponenterna. Du kan göra detta med OpenCV createTrackbar() fungera. Ange först etiketten som röd, blå eller grön. För det andra måste du skicka namnet på fönstret där du vill placera dessa staplar, exempel, windowName.

Den tredje parametern är minimigränsen för spårfältet, 0 i detta fall. Den fjärde parametern anger maxvärdet, vilket är 255 för ett 24-bitars färgvärde. Den femte och sista parametern är en återuppringningsfunktion som createTrackbar kräver en giltig funktion för. Det är därför du skapade emptyFunction tidigare för att fungera som en platshållare.

cv2.createTrackbar('Blå', fönsternamn, 0, 255, tomfunktion)
cv2.createTrackbar('Grön', fönsternamn, 0, 255, tomfunktion)
cv2.createTrackbar('Röd', fönsternamn, 0, 255, tomfunktion)

Deklarera en oändlig while-loop och skicka fönsternamnet tillsammans med bilden du vill visa till OpenCV: s imshow() fungera. Eftersom bilden innehåller en tredimensionell matris med nollor, visar programmet en svart skärm initialt.

Kontrollera om användaren har tryckt på escape-tangenten genom att testa värdet från waitkey() mot 27 (ASCII-koden för Escape-nyckeln). Funktionen waitkey() visar fönstret för det givna antalet millisekunder eller tills du trycker på en tangent. Genom att skicka en som ingång visar den fönstret i en millisekund men regenereras på grund av den oändliga while-slingan.

För att få den aktuella positionen för spårfältet, skicka namnet på spårfältet tillsammans med namnet på fönstret till getTrackbarPos(). Upprepa detta steg för de tre separata färgkomponenterna, blå, grön och röd. Använd segmentoperatorn för att tilldela de tre värdena till bildmatrisen. Detta kommer att ersätta den tidigare uppsättningen värden, initialt alla nollor, med de aktuella värdena enligt spårfältets positioner.

medan (Sann):
cv2.imshow (fönsternamn, bild)

om cv2.waitKey(1) == 27:
ha sönder

blå = cv2.getTrackbarPos('Blå', fönsternamn)
grön = cv2.getTrackbarPos('Grön', fönsternamn)
red = cv2.getTrackbarPos('Röd', fönsternamn)
bild[:] = [blå, grön, röd]
tryck (blått, grönt, rött)

När användaren trycker på Escape-tangenten, använd förstöra alla Windows() för att stänga fönstren som programmet öppnade:

cv2.destroyAllWindows()

Till sist, sätt ihop allt och kör det för att kontrollera och se din färgpalett.

Utdata från Python Color Palette-programmet

När du kör programmet ovan visas ett fönster som innehåller tre spårfält för färgerna blå, grön och röd. Spårstaplarna rör sig från ett intervall på 0 till 255. När du varierar värdena på de olika staplarna bör du se olika nyanser av färger i avsnittet nedan.

I det här första exemplet kan du se inställningen av den blå stapeln som 0, grön som 69 och röd som 255. Den resulterande utdatafärgen är en nyans av orange/röd. Dessutom visar terminalfönstret färgvärdena som 0 69 255.

På samma sätt, när du ställer in den blå stapeln som 130, grön som 0 och röd som 75, får du en indigofärg.

De olika applikationerna av OpenCV

OpenCV erbjuder värdefulla funktioner för uppgifter som bildbehandling, objektigenkänning, ansiktsigenkänning och spårning. Med OpenCV kan du producera datorseendeapplikationer i realtid som skulle vara en välsignelse inom områden som robotik, industriell automation, medicinsk bildbehandling och övervakningssystem.

Framtiden för datorseende är lovande. Du kommer att kunna använda datorseende för att hjälpa synskadade, ge bättre tillväxt inom jordbruket, förbättra trafiksäkerheten med självkörande bilar och till och med navigera på andra planeter, som Mars.