我目前正在开发一个程序,将RGBA图像转换为灰度图像.
我之前提出了一个问题并被引导到以下答案 - 更改单个像素的颜色 - Go lang图像
这是我原来的问题 - 将RGBA转换为灰度Golang的程序
我已经编辑了我的代码,所以它现在成功运行 - 但是输出的图像不是我想要的.它被转换为灰度,但像素都被搞砸了,使它看起来像旧电视上的噪音.
package main
import (
"image"
"image/color"
"image/jpeg"
"log"
"os"
)
type ImageSet interface {
Set(x, y int, c color.Color)
}
func main() {
file, err := os.Open("flower.jpg")
if err != nil {
log.Fatal(err)
}
defer file.Close()
img, err := jpeg.Decode(file)
if err != nil {
log.Fatal(os.Stderr, "%s: %v\n", "flower.jpg", err)
}
b := img.Bounds()
imgSet := image.NewRGBA(b)
for y := 0; y < b.Max.Y; y++ {
for …Run Code Online (Sandbox Code Playgroud) 我正在编写一个并行处理矩阵的程序。
我的矩阵是使用常量创建的n。
const n = 10
Run Code Online (Sandbox Code Playgroud)
频道是用以下代码创建的:
a := make(chan [n][n]int)
Run Code Online (Sandbox Code Playgroud)
这适用于任何低于大约值的任何东西12,n但任何更大的东西都会出现以下错误:
channel element type too large (>64kB)
Run Code Online (Sandbox Code Playgroud)
查看教程等,似乎缓冲通道可能是解决此问题的方法,但我尝试使用以下代码执行此操作,并给出了相同的错误:
a := make(chan [n][n]int, 1000)
Run Code Online (Sandbox Code Playgroud)
我是正确使用缓冲通道还是它们不是解决此问题的方法?任何关于我如何推进这一点的提示都非常感谢。
编辑:继给出的答案和评论之后,我现在正在尝试创建一个全局矩阵,该矩阵是空白的并且 go 例程可以写入。
const n int = 1024
blank [n][n]int
Run Code Online (Sandbox Code Playgroud)
我不确定如何在全球范围内声明它,并已尝试通过上述方法解决此问题。是否需要全局初始化?我似乎尝试的一切都会出错。
我目前正在编写程序,并且想随机生成一个矩阵。
目前,我正在按以下方式预先设置值:
m1 := [3][3]int{
[3]int{1, 1, 1},
[3]int{4, 1, 7},
[3]int{1, 65, 1},
}
Run Code Online (Sandbox Code Playgroud)
但是我希望输入的值在1到100的范围内随机生成。
import "math/rand"
Run Code Online (Sandbox Code Playgroud)
我正在导入上述库并尝试利用它。
我试图使此工作正常,但是似乎没有任何进展。
m1 := [3][3]int{
[3]int{rand.Intn, 1, 1},
[3]int{4, 1, 7},
[3]int{1, 65, 1},
}
Run Code Online (Sandbox Code Playgroud)
我试图用上述解决方案完成它,以使第一个数字随机,但是出现以下错误。
cannot use rand.Intn (type func(int) int) as type int in array or slice literal
Run Code Online (Sandbox Code Playgroud)
任何帮助,不胜感激。