C++を使用してイメージ内のすべての色を(#FFFFFF)のような16進数で表示する方法はありますか? ピクセル単位ですべての色を抽出するために必要なライブラリの種類は?そのライブラリを使用して、すべてのピクセルに1つずつコードをループする方法を教えてください。 申し訳ありません私の悪い英語。おかげさまで イメージの各ピクセルの全色を16進数で出力する方法(6digit)
答えて
は肩の上に立って「であります巨人の "。 巨人はこの場合、ImageMagickであり、ほとんどのLinuxディストリビューションにインストールされており、macOSとWindowsでは無料で利用できます。コマンドラインで
、単純に入力します。
# ImageMagick pixel enumeration: 300,168,65535,srgb
0,0: (64507,56283,34952) #FBDB88 srgb(251,219,136)
1,0: (65535,58596,37779) #FFE493 srgb(255,228,147)
2,0: (65535,56026,36237) #FFDA8D srgb(255,218,141)
3,0: (62708,51400,33153) #F4C881 srgb(244,200,129)
4,0: (62965,49858,33153) #F5C281 srgb(245,194,129)
5,0: (63222,48830,33153) #F6BE81 srgb(246,190,129)
6,0: (63479,48316,33924) #F7BC84 srgb(247,188,132)
7,0: (64250,48830,34952) #FABE88 srgb(250,190,136)
convert picture.jpg txt:
を出力は、第2の最も簡単なオプションは、hereから入手することができますCImg
C++ライブラリです。私はそれがよりもはるかに簡単だと信じています。たとえば、ラズベリーパイの場合、約1GBのスペースと1時間以上かかるのに対し、CImg
は、あなたが聞いたことをすることができます。ここ
convert -size 1x10 gradient:red-blue input.png
それが拡大される:
////////////////////////////////////////////////////////////////////////////////
// main.cpp
//
// CImg example of dumping pixels in hex
//
// Build with: g++-6 -std=c++11 main.cpp -lpng -lz -o main
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <cstdlib>
#define cimg_use_png // Do this if you want CImg to process PNGs itself without resorting to ImageMagick
#define cimg_use_jpeg // Do this if you want CImg to process JPEGs itself without resorting to ImageMagick
#define cimg_use_tiff // Do this if you want CImg to process TIFFs itself without resorting to ImageMagick
#define cimg_use_curl // Do this if you want CImg to be able to load images via a URL
#define cimg_display 0 // Do this if you don't need a GUI and don't want to link to GDI32 or X11
#include "CImg.h"
using namespace cimg_library;
using namespace std;
int main() {
// Load image
CImg<unsigned char> img("input.png");
// Get width, height, number of channels
int w=img.width();
int h=img.height();
int c=img.spectrum();
cout << "Dimensions: " << w << "x" << h << " " << c << " channels" <<endl;
// Dump all pixels
for(int y=0;y<h;y++){
for(int x=0;x<w;x++){
char hex[16];
sprintf(hex,"#%02x%02x%02x",img(x,y,0),img(x,y,1),img(x,y,2));
cout << y << "," << x << " " << hex << endl;
}
}
}
我々は、このようなImageMagickのと赤青から小さな勾配画像を作成していることをテストすることができ
とこのようなプログラムを実行しています - うまくいけば、16進数がff0000
(完全な赤色)から0000ff
(青フル):
./main
サンプル出力
Dimensions: 1x10 3 channels
0,0 #ff0000
1,0 #8d0072
2,0 #1c00e3
3,0 #aa0055
4,0 #3800c7
5,0 #c70038
6,0 #5500aa
7,0 #e3001c
8,0 #72008d
9,0 #0000ff
ありがとうございました! – owenizedd
あなたが必要なのはOpenCVです。画像をロードするには、ピクセルを取得し、それを進値書き込み:私はアイザック・ニュートン、六角で画像のピクセルをダンプする最も簡単な方法を引用するほど大胆かもしれ場合
#include <opencv\cv.h>
//....
Mat img = imread(filename);
for (int x = 0; x < img.cols; x++) {
for (int y = 0; y < img.rows; y++) {
Vec3b color = img.at<Vec3b>(y, x);
cout << std::hex << color.val[0]; //blue
cout << std::hex << color.val[1]; //green
cout << std::hex << color.val[2]; //red
//or
int colorint = img.at<int>(y, x);
cout << std::hex << colorint; //redgreenblue
}
}
注意! OpenCVはデフォルトでBGRを使用しているので、インデックス0は青の成分を与え、1は緑を与え、2は赤を与える。 – Baiz
ありがとうございましたコードを変更しました – user3811082
- 1. イメージからファイルへの16進数の色を抽出する
- 2. 次の16進数の出力を決定する方法
- 3. ピクセルからの色の取得とカラーコードの返信(16進数)
- 4. バーコードスキャナ16進数出力
- 5. Scala.jsで16進数の色を表現する方法は?
- 6. .gifイメージの各ピクセルの色数を変更しますか?
- 7. 16進数の色を配列に格納する方法
- 8. 出力を16進形式で印刷する方法
- 9. Cでは、char []をエスケープされた16進数で出力する方法は?
- 10. boost :: formatで16進数の出力を生成するには?
- 11. 2つの16進数を入力する方法は?
- 12. 16進数または10進数形式の変数を出力する
- 13. 'backtrace full'コマンド、出力は16進数
- 14. dumpbin出力の数値は16進数または10進数ですか?
- 15. erlangでバイナリ値を16進数に16進数に変換する方法
- 16. Pythonで16進数または16進整数を解析する方法
- 17. 16進コードの色のベクトルをプロットする方法
- 18. python3で16進数値を出力する
- 19. gdbはすべての値を16進モードで出力する方法は?
- 20. 10進数の色から16進数のPython
- 21. 特定の色の16進コードの暗い色の16進コードを取得
- 22. 文字列を16進数と16進数に変換する方法は?
- 23. (lldb)16進数のunsigned long longを出力します。
- 24. 私のウェブページで色の16進法コードを取得する方法
- 25. 文字列を16進数で16進数に変換する
- 26. Rの10進数と16進数の変換方法は?
- 27. イメージから16進数のカラー値のマトリックスを作成する
- 28. 16進数への16進値
- 29. SHA512の出力で10進値と16進数が等しくない
- 30. 現在の16進コードの色をUIViewからプログラムで取得する方法
あなたがコンソールに進値を取得したいですか? 'long color = pixelmap [pixel]; std :: cout << std :: hex << color; ' – user3811082
@ user3811082イメージをC++にロードするにはどうすればよいですか? – owenizedd
@ user3811082各ピクセルの全画像の16進値を知りたい – owenizedd