OpenCV读取图片每个像素RGB通道值

OpenCV读取图片每个像素RGB通道值

/*读取图片并显示每个像素点的RGB值*/
// 读取一幅图片每个像素处的RGB三个通道的值
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <gdiplus.h>

#pragma comment(lib, "gdiplus.lib")

using namespace std;
using namespace Gdiplus;

int main()
{
	GdiplusStartupInput gdiplusstartupinput;
	ULONG_PTR gdiplustoken;
	GdiplusStartup(&gdiplustoken, &gdiplusstartupinput, NULL);
	
	wstring infilename(L"0.jpg");

	string outfilename("color.txt");		// txt
	ofstream fout(outfilename.c_str());		// txt

//	ofstream fout;	// csv、xls	
//	fout.open("0.csv", ios::out | ios::trunc); // csv
//	fout.open("0.xls", ios::out | ios::trunc); // xls

	Bitmap* bmp = new Bitmap(infilename.c_str());

	UINT height = bmp->GetHeight();
	UINT width = bmp->GetWidth();

	cout << "width " << width << ", height " << height << endl;

	Color color;

	fout << "width " << width << ", height " << height << "\nstructure(X,Y,R,G,B)" << endl;	// txt
//	fout << "width " << width << ", height " << height  << endl;					// csv
//	fout << "X" << "," << "Y" << "," << "R" << "," << "G" << "," << "B" << endl;	// csv
//	fout << "width " << width << "\t height " << height << endl;						// xls
//	fout << "X" << "\t" << "Y" << "\t" << "R" << "\t" << "G" << "\t" << "B" << endl;	// xls

	for (int y = 0; y < height; y++)
		for (int x = 0; x < width; x++)
		{
			bmp->GetPixel(x, y, &color);
			fout << x << ";" << y << ";"<< (int)color.GetRed() << ";"<< (int)color.GetGreen() << ";"<< (int)color.GetBlue() << endl;	// txt
//			fout << x << "," << y << "," << (int)color.GetRed() << "," << (int)color.GetGreen() << "," << (int)color.GetBlue() << endl;	// csv			
//			fout << x << "\t" << y << "\t" << (int)color.GetRed() << "\t" << (int)color.GetGreen() << "\t" << (int)color.GetBlue() << endl;	// xls
		}

	fout.close();
	delete bmp;
	GdiplusShutdown(gdiplustoken);
	return 0;
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值