Movatterモバイル変換


[0]ホーム

URL:


Open In App
Next Article:
Replace Green Screen using OpenCV- Python
Next article icon
OpenCV is the huge open-source library for computer vision, machine learning, and image processing and now it plays a major role in real-time operation which is very important in today’s systems. By using it, one can process images and videos to identify objects, faces, or even the handwriting of a human.Camshift or we can say Continuously Adaptive Meanshift is an enhanced version of the meanshift algorithm which provides more accuracy and robustness to the model. With the help of Camshift algorithm, the size of the window keeps updating when the tracking window tries to converge. The tracking is done by using the color information of the object. Also, it provides the best fitting tracking window for object tracking. It applies meanshift first and then updates the size of the window as:\[s = 2\times\sqrt{\frac{M_{00}}{256}}\]It then calculates the best fitting ellipse to it and again applies the meanshift with the newly scaled search window and the previous window. This process is continued until the required accuracy is met.Note: For more information about meanshift refer toPython OpenCV: MeanshiftBelow is the implementation.Python3 1==
importnumpyasnpimportcv2ascv# Read the input videocap=cv.VideoCapture('sample.mp4')# take first frame of the# videoret,frame=cap.read()# setup initial region of# trackerx,y,width,height=400,440,150,150track_window=(x,y,width,height)# set up the Region of# Interest for trackingroi=frame[y:y+height,x:x+width]# convert ROI from BGR to# HSV formathsv_roi=cv.cvtColor(roi,cv.COLOR_BGR2HSV)# perform masking operationmask=cv.inRange(hsv_roi,np.array((0.,60.,32.)),np.array((180.,255.,255)))roi_hist=cv.calcHist([hsv_roi],[0],mask,[180],[0,180])cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)# Setup the termination criteria,# either 15 iteration or move by# atleast 2 ptterm_crit=(cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT,15,2)while(1):ret,frame=cap.read()# Resize the video frames.frame=cv.resize(frame,(720,720),fx=0,fy=0,interpolation=cv.INTER_CUBIC)cv.imshow('Original',frame)# perform thresholding on# the video framesret1,frame1=cv.threshold(frame,180,155,cv.THRESH_TOZERO_INV)# convert from BGR to HSV# format.hsv=cv.cvtColor(frame1,cv.COLOR_BGR2HSV)dst=cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)# apply Camshift to get the# new locationret2,track_window=cv.CamShift(dst,track_window,term_crit)# Draw it on imagepts=cv.boxPoints(ret2)# convert from floating# to integerpts=np.int0(pts)# Draw Tracking window on the# video frame.Result=cv.polylines(frame,[pts],True,(0,255,255),2)cv.imshow('Camshift',Result)# set ESC key as the# exit button.k=cv.waitKey(30)&0xffifk==27:break# Release the cap objectcap.release()# close all opened windowscv.destroyAllWindows()
Output:

Improve
Practice Tags :

Similar Reads

We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood ourCookie Policy &Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences

[8]ページ先頭

©2009-2025 Movatter.jp