华为OD机试 - 灰度图存储(Java & JS & Python & C & C++)

题目描述:

给定一个代表图像的二维整数数组,其中的整数代表颜色值,要求设计一个算法,将该图像转换为灰度图像。

解法1:Java版本




public class Solution {
    public int[][] toGrayImage(int[][] image) {
        int rows = image.length, cols = image[0].length;
        int[][] grayImage = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                int originalColor = image[i][j];
                // 转换为灰度值的公式为: gray = 0.3*R + 0.59*G + 0.11*B
                int gray = (int) (0.3 * ((originalColor >> 16) & 0xff) + 
                                  0.59 * ((originalColor >> 8) & 0xff) + 
                                  0.11 * (originalColor & 0xff));
                grayImage[i][j] = (originalColor & 0xff000000) | (gray << 16) | (gray << 8) | gray;
            }
        }
        return grayImage;
    }
}

解法2:JavaScript版本




function toGrayImage(image) {
    let grayImage = image.map(row => {
        return row.map(color => {
            let r = (color >> 16) & 255;
            let g = (color >> 8) & 255;
            let b = color & 255;
            let gray = Math.floor(0.3 * r + 0.59 * g + 0.11 * b);
            return (color & 0xff000000) | (gray << 16) | (gray << 8) | gray;
        });
    });
    return grayImage;
}

解法3:Python版本




def to_gray_image(image):
    gray_image = [[int(((color >> 16) & 0xff) * 0.3 +
                       ((color >> 8) & 0xff) * 0.59 +
                       (color & 0xff) * 0.11) for color in row] for row in image]
    return [[(color << 16) | (color << 8) | color | (color >> 24) << 24 for color in row] for row in gray_image]

解法4:C语言版本




#include <stdint.h>
 
void toGrayImage(int **image, int rows, int *cols, int ***grayImage) {
    *grayImage = (int **) malloc(sizeof(int *) * rows);
    for (int i = 0; i < rows; i++) {
        (*grayImage)[i] = (int *) malloc(sizeof(int) * (*cols));
        for (int j = 0; j < *cols; j++) {
            int originalColor = image[i][j];
            int gray = (int) (0.3 * (((originalColor >> 16) & 0xff

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日