public static Image ConvertToGrayScale(Image orginalImage)
{
Bitmap newImage = new Bitmap(orginalImage);
BitmapData orginalData = (orginalImage as Bitmap).LockBits(new Rectangle(0, 0, orginalImage.Width, orginalImage.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
BitmapData newData = (newImage as Bitmap).LockBits(new Rectangle(0, 0, orginalImage.Width, orginalImage.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int orginalstride = orginalData.Stride;
System.IntPtr orginalScan0 = orginalData.Scan0;
int newstride = newData.Stride;
System.IntPtr newScan0 = newData.Scan0;
unsafe
{
byte* pOrginal = (byte*)(void*)orginalScan0;
byte* pNew = (byte*)(void*)newScan0;
int nOffset = orginalstride - orginalImage.Width * 3;
byte red, green, blue;
for (int y = 0; y < orginalImage.Height; ++y)
{
for (int x = 0; x < orginalImage.Width; ++x)
{
blue = pOrginal[0];
green = pOrginal[1];
red = pOrginal[2];
byte newPixel = Convert.ToByte((blue + red + green) / 3);
pNew[0] = newPixel;
pNew[1] = newPixel;
pNew[2] = newPixel;
pOrginal += 3;
pNew += 3;
}
pOrginal += nOffset;
pNew += nOffset;
}
}
(orginalImage as Bitmap).UnlockBits(orginalData);
(newImage as Bitmap).UnlockBits(newData);
return newImage;
}
转自:
http://outofmemory.cn/code-snippet/584/c-jiang-tupian-zhuanwei-huidu-tupian
分享到:
相关推荐
在图像处理领域,将彩色图片转换为灰度图片是一种常见的操作。这主要涉及到色彩空间的转换,其中最常见的是从RGB(红绿蓝)色彩空间转换到灰度色彩空间。在C#编程语言中,我们可以利用.NET框架提供的System.Drawing...
在C#编程中,添加图片并将其转换为灰度图是一项基本操作,广泛应用于图像处理领域。这个项目可能是一个简单的练习,旨在帮助初学者熟悉C#中的图像处理技术。下面我们将详细探讨如何实现这一功能。 首先,我们需要...
在C#编程语言中,将byte数组转换为8bit灰度图像是一项常见且重要的技能,尤其是在处理图像数据或开发图像处理应用时。本文将详细解析这一过程,包括关键概念、技术细节以及具体实现步骤。 ### 关键概念 1. **8bit...
在C#编程环境中,我们可以利用图像处理库如System.Drawing来实现彩色图片向黑白图片的转换。这个过程通常称为灰度化或二值化,即将图片的每个像素从RGB(红绿蓝)三色模型转换为单色调。下面,我们将详细讨论如何...
对于云服务,通常需要将图片转为Base64编码的字符串。收到服务返回的识别结果后,解析JSON格式的响应数据,提取出识别的文字。 5. **错误处理与调试**:在实现过程中,可能会遇到网络问题、权限问题或API调用限制。...
在彩色图像转为灰度图像后,可以通过这个灰度值来分析图像特征。 实现这个小程序的关键步骤包括: 1. **集成Halcon库**:在C#项目中,我们需要引入Halcon的.NET库,这样就可以调用Halcon提供的图像处理函数。通常...
彩色图片转为灰度图的公式如下: 代码如下: gray(i,j) = 0.299 * Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j) 其中gray(i,j) 为转化后的灰度值 (i,j)为像素点的位置。 源代码如下: public ...
例如,将所有像素颜色转为灰度: ```csharp for (int x = 0; x ; x++) { for (int y = 0; y ; y++) { Color pixel = image.GetPixel(x, y); int gray = (pixel.R + pixel.G + pixel.B) / 3; image.SetPixel(x, ...
2. **灰度转换**:图像从彩色转为灰度,通常通过红绿蓝(RGB)三通道的加权平均实现。权重可以是255/3,或者根据人眼对颜色敏感度的权重0.299R + 0.587G + 0.114B。 3. **灰度直方图**:直方图是图像亮度分布的统计...
本文将详细介绍如何使用C#语言实现彩色图像到灰度图像的转换,并对提供的代码进行解析。 #### 一、基础知识概述 1. **颜色模型**:在计算机图形学中,常用的RGB颜色模型是由红(Red)、绿(Green)和蓝(Blue)三...
OpenCvSharp与Picturebox实现图片打开、读取、灰度转换与保存
1.C#编写 32 位和 24 色位图(Bitmap)转 8 位灰度图像函数2.8 位灰度图生成直方图,可在 Chart 中显示
在本篇文章中,我们将深入探讨如何使用C#编程语言将一幅24位或16位的彩色图像转换成8位图像。此过程涉及到颜色量化、调色板管理和可能的抖动处理技术。以下是对该主题的详细解析: ### 1. 8位图像的基本概念 在...
为了增强OCR的准确性和适应性,可以对图像进行预处理,如调整亮度、对比度,或者将图片转为灰度,以减少噪音和提高识别率。Tesseract提供了一些图像处理函数,可以在处理图像前使用。 此外,你可以将识别结果展示在...
根据给定的信息,本文将详细解释C#中的指针应用在图像处理中的具体实现方法,同时探讨代码片段中涉及的关键概念和技术。 ### C#指针与图像处理 #### 概述 C#作为一种广泛使用的面向对象编程语言,在.NET框架的支持...
# 读取图像并转为灰度 img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 设置鼠标回调函数 cv2.setMouseCallback('Image', mouse_callback) # 显示图像 while True: cv2.imshow('Image', img) if cv2....
在本文中,我们将深入探讨如何在C#编程环境中实现海康相机获取的图像格式与National Instruments的VisionPro图像格式之间的转换。海康威视是一家知名的安防监控设备制造商,其相机可提供多种图像格式,而VisionPro是...
2. **处理颜色格式**:TGA支持多种颜色格式,如RGB、RGBA、灰度等,程序需要正确解析这些格式并将其转换为PNG兼容的格式。 3. **错误处理**:由于该工具是针对特定用途开发的,可能只处理了一部分TGA格式,因此对于...
本示例主要涉及C#语言,利用这两家公司的SDK,将相机捕获的图像转换为VisionPro 9.0的CogImage8Grey格式。 首先,SDK是软件开发工具包,它包含了一系列的库、接口文档、示例代码和工具,以供开发者构建与特定硬件或...
这个项目是关于如何使用C#编程语言,在Visual Studio 2010环境下,将原始图像转换成LBP特征图像。LBP特征图像在人脸识别、纹理分类和行为识别等任务中具有广泛的应用。 LBP的基本思想是通过比较像素点与其周围邻域...