如何用c++编程实现提取给定图像中任意一点的RGB颜色值

如何用c++编程实现提取给定图像中任意一点的RGB颜色值,第1张

COLORREF clr = ::GetPixel(hDC, pointx, pointy); //获取当前鼠标点像素值

m_red = GetRValue(clr);

m_bluee = GetBValue(clr);

m_green = GetBValue(clr);

Picture控件可以用GetPixel来得到RGB颜色值。返回值是一个Long类型的整数。它的值为R 65536 + G 256 + B。所以要得到其各自的颜色值,需要将返回值除65536得到R,返回值与65536取余除256得到G,返回值与65536256取余得到B。

右击属性,选择摘要,点击详细属性,里面有位深度一项。RGB图位深度是24,灰度和索引图位深度是8,灰度是白灰黑表示的图,索引图有可能是彩色的,也是8位深。

属性是人类对于一个对象的抽象方面的刻画。一个具体事物,有许许多多的性质与关系,把一个事物的性质与关系,都叫作事物的属性。事物与属性是不可分的,事物都是有属性的事物,属性也都是事物的属性。

public class TestActionAction extends Action {

public void doSome(){

try {

//

//ImageIOread(">

第一种方法:使用”美图看看“打开一张png,如图。然后,点击”编辑“再点击下拉三角。选择”批量转换格式“,将格式转换为JPG格式即可。

第二种方法:打开电脑自带”画图工具“,然后点击”另存为“,存储为JPG格式即可。

第三种方法:使用Potoshop打开一张,如图。然后,点击”文件“-”存储为“,将存储为JPG格式即可。

不用API

Dim fname As String

Private Sub Command1_Click()

Dim c As String, x As Integer, y As Integer

c = ""

MeCaption = "正在读取颜色中"

For x = 1 To Picture1ScaleWidth

For y = 1 To Picture1ScaleHeight

c = c & strRGB(Picture1Point(x - 1, y - 1)) & " " '读取每个像素的十六进制颜色值

Next

c = c & vbCrLf

Next

Open fname & "txt" For Output As #1 '在同一目录下保存txt格式的颜色文件

Print #1, c

Close #1

MeCaption = "读取颜色"

End Sub

Private Function strRGB(ByVal color As Long) As String '颜色值转RGB格式的字符串

Dim r As Integer, g As Integer, b As Integer

r = (color And &HFF) Mod 256

g = ((color And &HFF00) \ &H100) Mod 256

b = ((color And &HFF0000) \ &H10000) Mod 256

strRGB = "RGB(" & b & "," & g & "," & r & ")"

End Function

Private Sub Form_Load()

MeCaption = "读取颜色"

Picture1AutoSize = True

Picture1ScaleMode = 3

fname = "e:\hehejpg"

Picture1Picture = LoadPicture(fname)

End Sub

以上就是关于如何用c++编程实现提取给定图像中任意一点的RGB颜色值全部的内容,包括:如何用c++编程实现提取给定图像中任意一点的RGB颜色值、VB Picture或Image中有一张图,如何取每个像素点的RGB值、如何查看图片的RGB信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10627076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存