38 lines
1.4 KiB
Kotlin
38 lines
1.4 KiB
Kotlin
package network.rs485.ben.computervision
|
|
|
|
import network.rs485.ben.computervision.CvContext.withMat
|
|
import org.opencv.core.CvType
|
|
import org.opencv.core.Mat
|
|
import org.opencv.core.Scalar
|
|
import org.opencv.imgproc.Imgproc
|
|
|
|
internal val COLOR_BLACK = Scalar(0.0, 0.0, 0.0, 255.0)
|
|
internal val COLOR_WHITE = Scalar(255.0, 255.0, 255.0, 255.0)
|
|
internal val COLOR_RED = Scalar(0.0, 0.0, 180.0, 255.0)
|
|
internal val COLOR_GREEN = Scalar(0.0, 255.0, 0.0, 255.0)
|
|
internal val COLOR_BLUE = Scalar(255.0, 0.0, 0.0, 255.0)
|
|
internal val COLOR_YELLOW = Scalar(0.0, 240.0, 255.0, 255.0)
|
|
|
|
internal operator fun Scalar.plus(other: Scalar): Scalar =
|
|
Scalar((0..3).map { `val`[it] + other.`val`[it] }.toDoubleArray())
|
|
|
|
internal operator fun Scalar.minus(other: Scalar): Scalar =
|
|
Scalar((0..3).map { `val`[it] - other.`val`[it] }.toDoubleArray())
|
|
|
|
internal operator fun Scalar.times(factor: Double): Scalar =
|
|
Scalar((0..3).map { `val`[it] * factor }.toDoubleArray())
|
|
|
|
internal operator fun Scalar.div(divider: Double): Scalar =
|
|
Scalar((0..3).map { (`val`[it] / divider) }.toDoubleArray())
|
|
|
|
internal fun Scalar.asArray(length: Int = 4): DoubleArray {
|
|
assert(length > 0)
|
|
return (0 until length).map { `val`.getOrElse(it) { 0.0 } }.toDoubleArray()
|
|
}
|
|
|
|
internal fun Mat.copyToColor(image: Mat) = withMat(MatInfo.from(image, CvType.CV_8U)) { tmp ->
|
|
convertTo(tmp, CvType.CV_8U)
|
|
Imgproc.cvtColor(tmp, image, Imgproc.COLOR_GRAY2BGR)
|
|
image
|
|
}
|