PDA

View Full Version : مقدار rgb



python2015
یک شنبه 02 آذر 1393, 16:28 عصر
سلام....می خواستم بدونم چطور می شه از طریق سی پلاس پلاس با دونستن مختصات یک پیکسل از تصویر مورد نظرمون....مقادیر R G B او رو بدست آورد......خیلی ممنون می شم دوستان کمک کنند(منظور تصویری که مثلا در قسمتی از هارد داریم مثلا 'e:\image1.png' )
.....
من نمی خوام پیچیده باشه کار...توی برنامه مد کنسول... اطلاعات رو نشون بده....

مسعود اقدسی فام
یک شنبه 02 آذر 1393, 17:29 عصر
در وهله‌ی اول باید فرمت ذخیره‌سازی رو بدونید. png و jpg و bmp اطلاعات تصویر رو به یه نحو ذخیره نمی‌کنن. این لینک فرمتای رایج رو معرفی کرده:

http://en.wikipedia.org/wiki/Image_file_formats
لینک جزئیات روش ذخیره‌سازی هر فرمت هم توی همین صفحه هست.

omid_kma
یک شنبه 02 آذر 1393, 17:42 عصر
البته نیازی هم به اختراع دوباره چرخ نیست
می تونید از توابع خود ویندوز یا کتابخانه های مختلف استفاده کنید مثل Qt ,opencv , ...
نمونه با opencv :
http://www.7khatcode.com/1155/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%B1%D9%86%DA%AF-%DB%8C%DA%A9-%D9%BE%DB%8C%DA%A9%D8%B3%D9%84-%D8%AF%D8%B1-opencv
و http://www.7khatcode.com/5635/get-pixel-and-set-pixel-opencv

rahnema1
یک شنبه 02 آذر 1393, 20:55 عصر
اینم کاربرد یک کتابخونه دیگه به نام lodepng
حجم فایل exe 30 - 40 کیلوبایت میشه
در مورد تابع main توضیح میدم
row و col یعنی سطر و ستون را به مقدار مورد نظر تغییر بدید
به طور پیش فرض فایلی به نام test.png در همون فولدر باز میشه وگرنه در خط فرمان نام فایل png را بعد نام فایل اجرایی تایپ کنید

int main(int argc, char *argv[])
{
const char* filename = argc > 1 ? argv[1] : "test.png";

//load and decode
std::vector<unsigned char> buffer, image;
loadFile(buffer, filename);
unsigned long w, h;
int error = decodePNG(image, w, h, buffer.empty() ? 0 : &buffer[0], (unsigned long)buffer.size());

//if there's an error, display it
if(error != 0) std::cout << "error: " << error << std::endl;

//the pixels are now in the vector "image", use it as texture, draw it, ...
int row = 3; int col =2;
int index = (row * w + col) * 4;
if(image.size() > 4)
{
std::cout << "width: " << w << " height: " << h << std::endl << std::endl;
std::cout << "row, col: " << row << ", " << col << " ==> RGBA:" << int(image[index]) << "," << int(image[index+1]) << "," << int(image[index+2]) << "," << int(image[index + 3]) << std::endl;
}
}

http://www.sharefile.ir/uploads/1416780472.zip