package main

import (
	"github.com/airbusgeo/godal"
	"github.com/sirupsen/logrus"
	"github.com/spf13/cobra"
	"gocv.io/x/gocv"
	"starwiz.cn/sjy01/image-proc/pkg/producer"
	"starwiz.cn/sjy01/image-proc/pkg/utils"
)

var (
	input0 string
)

var testCmd = &cobra.Command{
	Use:   "test",
	Short: "test command",
	Long:  `test command`,
	Run: func(cmd *cobra.Command, args []string) {
		godal.RegisterAll()

		input0_mat, err := utils.ReadTifftoMat(input0)
		if err != nil {
			logrus.Error(err)
			return
		}

		mv := gocv.Split(*input0_mat)
		// for i := 0; i < len(mv); i++ {
		// 	out := producer.CV_Sobel(mv[i])
		// 	utils.SavePanToGDALGTiff(out, 0, 0, "data/temp/out_"+strconv.Itoa(i)+".tif", 1.3)
		// }
		index := len(mv) - 1
		for i := index - 1; i >= 0; i-- {
			mv[i] = producer.CV_ECCAlign(mv[index], mv[i])
		}

		out := gocv.NewMat()
		mv[index].ConvertTo(&mv[index], gocv.MatTypeCV16U)
		gocv.Merge(mv, &out)
		utils.SaveBGRToGDALGTiff(out, 4, 0, 0, 5.2,
			[]godal.ColorInterp{godal.CIBlue, godal.CIGreen, godal.CIRed, godal.CIUndefined},
			"data/temp/ecc.tif")
	},
}

func init() {
	rootCmd.AddCommand(testCmd)

	testCmd.Flags().StringVarP(&input0, "input0", "i", "/Users/lan/workspace/sjy01/image-proc/data/002438/L1A/ROI_7000_10500/MSS/SJY01_MSS_20241014_121246_002438_018_ROI_7000_10500_L1A.tiff", "input0")
}
