[OpenCV] Chapter02-05 Converting image from one color space to another

Converting image from one color space to another

Source Code

package main

import (
 "gocv.io/x/gocv"
 "log"
)

func main() {
 imageFilePath := "../../data/Lena.png"
 originalMat := gocv.IMRead(imageFilePath, gocv.IMReadAnyColor)
 if originalMat.Empty() {
  log.Panic("Can not read image: " + imageFilePath)
  return
 }

 // gray
 grayMat := gocv.NewMat()
 gocv.CvtColor(originalMat, &grayMat, gocv.ColorBGRToGray)

 windowForGray := gocv.NewWindow("Gray Image")
 defer windowForGray.Close()
 windowForGray.IMShow(grayMat)

 // hsv
 hsvMat := gocv.NewMat()
 gocv.CvtColor(originalMat, &hsvMat, gocv.ColorBGRToHSV)

 windowForHsv := gocv.NewWindow("HSV Image")
 defer windowForHsv.Close()
 windowForHsv.IMShow(hsvMat)

 // hsv extension
 hsvImage := hsvMat.ToBytes()
 for i := 2; i < len(hsvImage); i += 3 {
  hsvImage[i] = hsvImage[i] * 2
 }

 hsvExtensionMat, err := gocv.NewMatFromBytes(hsvMat.Rows(), hsvMat.Cols(), gocv.MatTypeCV8UC3, hsvImage)
 if err != nil {
  log.Panic("Can not convert bytes to Mat")
  return
 }

 gocv.CvtColor(hsvExtensionMat, &hsvExtensionMat, gocv.ColorHSVToBGR)

 windowForHsvExtension := gocv.NewWindow("HSV Extension Image")
 defer windowForHsvExtension.Close()
 windowForHsvExtension.IMShow(hsvExtensionMat)

 // wait
 for {
  key := gocv.WaitKey(3)
  if key == 27 {
   log.Println("Pressed ESC")
   break
  }
 }
}

Execute Result

Comments

Popular posts from this blog

[OpenCV] What is gocv?

[OpenCV] Chapter01-05 Working with UI elements such as scrollbars in OpenCV window

[OpenCV] How to set up gocv