1.Đọc ảnh-lưu ảnh import cv2 img= cv2.imread(“ Sources/lena.png”) imGray = cv2.cvt( img, cv2.COLOR_BGR2GRAY) cv2.imwrite(“Resources/anhXam.png”, imGray) # lưu ảnh xám vào file Resources ảnh thực tế thường RGB Opencv BGR ơng viết opencv thích cv2.imshow(“Anh co gai”,img) cv2.waitKey(0) 2.ĐỌC video import cv2 cap= cv2.VideocCapture(“Sources/nhactre.mp4”) while True: success, img = cap.read() cv2.imshow(“Video nhac tre”,img) if cv2.waitKey(1) & 0xFF == ord(‘q’): break Basic function - chuyển thành ảnh xám chuyển ảnh xám sang ảnh mờ, ảnh màu sang ảnh biên import cv2 img=cv2.imread("Resources/me3.jpg") print(img.shape) // in kích thước ảnh img imgray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) // ảnh xám imBlur= cv2.GaussianBlur(imgray,(1,1),0) // lu mờ ảnh xám chống nhiễu , (1,1) thay (13,13) miễn số lẻ x số lẻ, số lớn mờ , singma để lm chưa check imCanny = cv2.Canny(imgray,60,60) // lọc biên đen trắng imResize= cv2.resize(imgray,(500,500)) // edit kích thước ảnh imgCropped = img[0:200, 100:300] // lấy phần ảnh có tọa độ từ 0-200 100-300 print(imgCropped.shape) // in kích thước ảnh cắt cv2.imshow(“Anh cat”, imgCropped) cv2.imshow(" Anh xam la:",imgray) cv2.imshow("Anh la:",imBlur) cv2.imshow("Anh bien :",imCanny) cv2.waitKey(0) Hình dạng văn thích import cv2 import numpy as np im= np.zeros((512,512,3),np.uint8) # tạo files ảnh rỗng kích thước 512x512 để vẽ; ảnh màu #print(im) #im[:] =255,0,0 cv2.line(im,(0,450),(500,150),(200,220,110),3) #(0,450) tọa độ điểm đầu ; #(500,150) tọa độ điểm cuối # (200,220,110) màu line , độ to đường cv2.rectangle(im,(0,40),(50,150),(200,20,110),2) # tạo hình vng ; độ to nét hình # muốn bơi màu hình vng chuyển thành cv2.FILLED cv2.circle(im,(213,260),30,(232,132,255),5) biên #tọa độ tâm,bán kính, màu ,độ to đường cv2.putText(im," *Hello* ",(2,233),cv2.FONT_HERSHEY_COMPLEX,1,(122,12,233),3) cv2.imshow(" ",im) cv2.waitKey(0) 4.Cắt ảnh import cv2 import numpy as np im= cv2.imread("Resources/quanbai.jpg") width,height=190,250 # Khai báo kích thước ảnh cắt cần xuất pts1= np.float32([[290,113],[410,140],[203,238],[332,271]]) # Đây tọa độ ảnh cần cắt theo thứ tự : góc trái, góc phải góc trái, góc phải (các thơng số mở Paint di chuột vào góc ảnh cần cắt ) pts2= np.float32([[0,0],[width,0],[0,height],[width,height]]) # Thông số ảnh cần xuất matrix = cv2.getPerspectiveTransform(pts1,pts2) imgoutput = cv2.warpPerspective(im,matrix,(width,height)) cv2.imshow( " Image", im) cv2.imshow(" im cut",imgoutput) cv2.waitKey(0) Cách cắt ảnh tổng quát lệnh Imcroped= Img(0-200; 100-300) cắt đc phần ảnh vng góc với ảnh cũ 5.Joining Images -Nhân đôi nhân ba ,tạo ma trận ảnh Color ditection( dò màu) import cv2 import numpy as np def empty(c) : pass path = 'Resources/labo.png' cv2.namedWindow("TrackBars") cv2.resizeWindow("TrackBars",640,340) cv2.createTrackbar("Hue min","TrackBars",0,179,empty) cv2.createTrackbar("Hue max","TrackBars",176,179,empty) cv2.createTrackbar("Sat min","TrackBars",40,255,empty) cv2.createTrackbar("Sat max","TrackBars",255,255,empty) cv2.createTrackbar("Val min","TrackBars",64,255,empty) cv2.createTrackbar("Val max","TrackBars",255,255,empty) while True: img=cv2.imread(path) imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hmin = cv2.getTrackbarPos("Hue min","TrackBars") hmax = cv2.getTrackbarPos("Hue max", "TrackBars") smin = cv2.getTrackbarPos("Sat min", "TrackBars") smax = cv2.getTrackbarPos("Sat max", "TrackBars") vmin = cv2.getTrackbarPos("Val min", "TrackBars") vmax = cv2.getTrackbarPos("Val max", "TrackBars") print(hmin,hmax,smin,smax,vmin,vmax) lower = np.array([hmin, smin, vmin]) upper= np.array([hmax,smax,vmax]) mask= cv2.inRange(imgHSV,lower,upper) resizeMask= cv2.resize(mask,(500,600)) imgResult= cv2.bitwise_and(img,img,mask =mask) cv2.imshow("Original image",img) cv2.imshow(" HSV :", imgHSV) cv2.imshow(" MASK ",resizeMask) cv2.imshow("image Result ",imgResult) cv2.waitKey(1) Đường biên phát hình dạng (Contours and shape ditection) Đưa ảnh nhị phân(threshold) ,lọc biên ảnh( hàm Canny) -2 hàm k chạy ảnh màu nên phải chuyển convert ảnh màu sang ảnh gray import cv2 import numpy as np import imutils path = "Resources/shape.jpg" img = cv2.imread(path) imRotate= imutils.rotate(img,60) imgGray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) timCanh= cv2.Canny(imgGray,10,340) lớn mà đc đủ biên # lọc biên cho ảnh,10 vs 340 số nhỏ ret,thresh_binary= cv2.threshold(imgGray,127,255,cv2.THRESH_BINARY) #ảnh nhị phân cv2.imshow("Anh xam",imgGray) cv2.imshow("Anh THRESHOW", thresh_binary) cv2.imshow("Canh cua anh ",timCanh) cv2.waitKey(0) #cv2.destroyALLWindows() kết Bài tập lớn - Code nhận diện hình dạng - import cv2 img = cv2.imread("Resources/shapes1.png") imgGray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret,thresh= cv2.threshold(imgGray,240,255,cv2.THRESH_BINARY) contours,ret= cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) for contour in contours: approx= cv2.approxPolyDP(contour,0.01*cv2.arcLength(contour,True),True) cv2.drawContours(img,[approx],0,(0,0,0),2) x= approx.ravel()[0] y= approx.ravel()[1] if len(approx)==3: cv2.putText(img,"Tam Giac he",(x,y),cv2.FONT_HERSHEY_COMPLEX,0.5,(1,1,0)) elif len(approx)==4: x1,y1,w,h = cv2.boundingRect(approx) a = float(w/h) if ( a > 0.95 )and ( a