C++获取黑色图片上一个白色点的像素坐标

C++语言 码拜 10年前 (2015-05-11) 1710次浏览 0个评论

这是一个获取一张黑色图片上一个白色亮点的具体坐标的程序,在获取白色亮点坐标这一块的程序编纂的时候遇到了问题,下面的几条语句是什么意思,希望能给详细的解释一下,还有就是如何选取这个白色亮点的坐标?真的非常感谢!
C++获取黑色图片上一个白色点的像素坐标

5分
代码的意思容易理解:
逐行获取位图每个像素的颜色值,然后输出像素坐标和颜色的RGB值到文件。

你说的“选取”是什么意思?在哪选取?
无论怎么选取,首先要判断出白色的点,纯白色的RGB值为R=255,G=255,B=255

引用 1 楼 faithcj 的回复:

代码的意思容易理解:
逐行获取位图每个像素的颜色值,然后输出像素坐标和颜色的RGB值到文件。

你说的“选取”是什么意思?在哪选取?
无论怎么选取,首先要判断出白色的点,纯白色的RGB值为R=255,G=255,B=255

C++获取黑色图片上一个白色点的像素坐标
这个图片的长和宽我已经读出来了,再就是怎么找到这个白色的点,然后把这个白色的点的坐标输出,具体的语句应该怎么编写?真的太感谢您了

15分
仅供参考:

#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"1.jpg");
    string outfilename("color.txt");

    Bitmap* bmp = new Bitmap(infilename.c_str());
    UINT height = bmp->GetHeight();
    UINT width  = bmp->GetWidth();
    cout << "width " << width << ", height " << height << endl;

    Color color;
    ofstream fout(outfilename.c_str());

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

    fout.close();

    delete bmp;
    GdiplusShutdown(gdiplustoken);
    return 0;
}
#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"1.jpg");

    Bitmap* bmp = new Bitmap(infilename.c_str());
    UINT height = bmp->GetHeight();
    UINT width  = bmp->GetWidth();

    Color color;

    for (UINT y = 0; y < height; y++)
    for (UINT x = 0; x < width ; x++) {
            bmp->GetPixel(x, y, &color);
            if ((int)color.GetRed  ()>200
             && (int)color.GetGreen()>200
             && (int)color.GetBlue ()>200) {
               cout << x << "," << y << endl;
               goto EXIT;
            }
    }
EXIT:
    delete bmp;
    GdiplusShutdown(gdiplustoken);
    return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++获取黑色图片上一个白色点的像素坐标
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!