1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
package main
import ( "fmt" "gocv.io/x/gocv" "image" )
func (sizex int, sizey int, b float64, g float64, r float64) gocv.Mat { img := gocv.NewMatWithSizeFromScalar(gocv.NewScalar(b, g, r, 255), sizex, sizey, gocv.MatTypeCV8UC3) return img }
func Convert(srcPath string, dstPath string, r, g, b float64) {
}
func main() { lb := gocv.NewScalar(68, 84, 153, 255) ub := gocv.NewScalar(80, 255, 255, 255)
hsv := gocv.NewMat() defer hsv.Close() mask := gocv.NewMat() defer mask.Close() mask_inv := gocv.NewMat() defer mask.Close() frame := gocv.NewMat() defer frame.Close() person := gocv.NewMat() defer frame.Close() kernel := gocv.GetStructuringElement(gocv.MorphRect, image.Pt(3, 3)) defer kernel.Close()
capt, err := gocv.VideoCaptureFile("video.mp4") defer capt.Close() if err != nil { panic(err) }
fps := capt.Get(gocv.VideoCaptureFPS) width := int(capt.Get(gocv.VideoCaptureFrameWidth)) height := int(capt.Get(gocv.VideoCaptureFrameHeight)) writer, err := gocv.VideoWriterFile("output.mp4", "avc1", fps, width, height, true) defer writer.Close()
if err != nil { panic(err) return }
for { if ok := capt.Read(&frame); ok { gocv.CvtColor(frame, &hsv, gocv.ColorBGRToHSV) gocv.InRangeWithScalar(hsv, lb, ub, &mask)
gocv.BitwiseNot(mask, &mask_inv) gocv.Erode(mask_inv, &mask, kernel) gocv.BitwiseAndWithMask(frame, frame, &person, mask_inv)
err = writer.Write(person) if err != nil { fmt.Printf("err occur when write frame: %s", err) } } else { break } }
}
|
近期评论