Programim dhe zhvillim, javascript, python, php, html

hapja e një imazhi jpeg ose png si të dhëna pixel në c ose c++

ky është postimi im i parë kështu që ju lutem më njoftoni nëse nuk e përcjell pyetjen qartë.

Unë jam duke u përpjekur të hap një skedar imazhi (bardh e zi) jpeg ose png si një grup në dev c++ në mënyrë që të mund të izoloj vendin e pikselëve të bardhë. treguesit dhe sythe për izolimin që kuptoj. megjithatë, hapja e skedarit të imazhit nuk ka funksionuar dhe nuk kam mundur të gjej një shembull që mund ta përdor. përveç asaj të dhënë #include "cstdlib" #include "iostream" #include "stdio.h"

Unë nuk kam skedarë të tjerë të kokës. Unë e di fopen për skedar të hapur, megjithatë asnjë nga përpjekjet e mia nuk i ka shfaqur të dhënat e imazhit.

faleminderit për çdo ndihmë

KY NUK ËSHTË KODI IIM. KY ËSHTË SHEMBULL BIV1991 I DREJTUAR MUA Unë po postoj sepse titulli për gdiplus.h nuk po gjendet. header unknwn, windows,objidl u sugjeruan për të zgjidhur atë problem

#include <cstdlib>
#include <iostream>
#include <Unknwn.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib,"gdiplus.lib") 
int main(int argc, char *argv[])
{
   // initialize gdiplus
Gdiplus::GdiplusStartupInput si;
ULONG_PTR token;
Gdiplus::GdiplusStartup(&token,&si,0);

// load image as bitmap, any formats supported
Gdiplus::Bitmap image(L"C:\\image.jpg",false);
int w = image.GetWidth();
// image.LockBits - to read pixels 
    system("PAUSE");
    return EXIT_SUCCESS;
}
15.12.2014

  • Të dy këto formate janë të koduara, kështu që do t'ju duhet t'i deshifroni ato për të marrë të dhënat e papërpunuara. Ju duhet të shikoni në një bibliotekë për të trajtuar dekodimin. 15.12.2014
  • Nuk ka asgjë për dekodimin e imazheve të ndërtuara në standardin C++. Ju duhet një bibliotekë e palës së tretë për këtë, si p.sh. libjpeg dhe libpng. 15.12.2014
  • që ka kuptim të përsosur. Megjithatë, kam probleme duke përfshirë atë bibliotekë. a do të mund të më tregoni deklaratën e duhur të përfshirjes? faleminderit 15.12.2014

Përgjigjet:


1

Për të filluar, nuk ka një bibliotekë standarde C++ për të përpunuar imazhet. Së dyti, formatet e imazhit jpeg dhe png janë formate imazhi të ngjeshur që kanë nevojë për një lloj algoritmi kompleks dekompresimi. Pra, për të filluar punën me imazhet, keni dy mënyra:

  1. Përdorimi i formatit të thjeshtë të imazhit si bmp. bmp është vetëm tampon pixel me një kokë të lehtë, që përshkruan atë format tampon pixel. Ju mund të shkruani vetë një program duke ngarkuar bmp në gjysmën tonë (dhe të humbni rreth një orë për të kuptuar vetë formatin). Më shumë për bmp: http://en.wikipedia.org/wiki/BMP_file_format.

  2. Duke përdorur bibliotekën EXTERNAL. Kjo do të thotë, ju nuk e keni këtë bibliotekë me gjuhën tuaj ose paketën e përpiluesit. Ju duhet ta shkarkoni dhe madje ta instaloni ndonjëherë. Në përgjithësi, për të përdorur bibliotekën e jashtme duhet të bëni pesë kofshë: 1) Gjeni bibliotekën e përpunimit të imazheve në internet. 2) Vendosni skedarin xxx.lib në dosjen tuaj të projektit. 3) Tregojuni lidhësit tuaj që dëshironi të përdorni xxx.lib 4) Shtoni kodin tuaj #include "xxx.h". 5) Përdorni API të bibliotekës për të ngarkuar imazhin.

15.12.2014
  • ok, kjo ka kuptim. Unë zakonisht punoj me ardino dhe kurrë nuk më është dashur të shkarkoj skedarë të jashtëm të kokës nga interneti. fillimisht po e bëja këtë projekt me një mikrokontrollues Psoc 4 me një kamerë të jashtme dhe kartë SD. megjithatë, së bashku me punën me një kod më pak të zotëruar (të vetë Cyperss-it) kisha një sërë gabimesh duke i futur libs në punë. doja të përdorja një model c++ për t'i treguar vetes dhe profesorit se koncepti funksionoi, por bordi mbi të cilin po eksperimentonim nuk ishte praktike për të bërë një fotografi dhe për ta ruajtur atë në kartën SD 15.12.2014
  • Nëse përdorni mikrokontrollues dhe madje nuk mund të përdorni disa biblioteka standarde (që është në rastin tim, për shembull, unë gjithashtu punoj me mikrokontrollues), mund t'ju rekomandoj të përdorni bibliotekën stb_image. Ai ka vetëm skedarë stb_image.h dhe stb_image.cpp, mund të përpunojë të gjithë fëmijët e zakonshëm të imazheve dhe ka ndërfaqe treguese me levë shumë të ulët në stilin c, kështu që është e lehtë të integrohet në projektin e mikrokontrolluesit. 15.12.2014
  • faleminderit shumë për atë sugjerim. do ta provoj. a ka ndonjë lidhje interneti që mund të jepni për këtë lib në mënyrë që të mund të provoj ta lidh atë me kodin? 15.12.2014
  • E gjeta tani në GitHub: github.com/nothings/stb . Por duket se është modifikuar që kur e kam përdorur për herë të fundit. Tani i gjithë kodi është në skedarin stb_image.h duket dhe ju duhet vetëm ai skedar. 15.12.2014
  • kjo është një faqe interneti shumë e lezetshme. Unë shikova se çfarë përfshihej dhe duhet të them që profesorit tim do ta pëlqejë gjithashtu këtë. Unë kam vetëm një pyetje më shumë për ju nëse nuk ka shumë probleme. si mund të përfshihet një lib nga interneti? a e vendos url-në në skedarin tim të projektit? 15.12.2014
  • Kjo varet nga IDE-ja juaj. Por në përgjithësi ju duhet të shkarkoni manualisht të gjithë skedarët lib, t'i vendosni në drejtorinë e projektit dhe t'i tregoni përpiluesit tuaj që dëshironi t'i përdorni ato. 15.12.2014
  • Është në rregull. Mos hezitoni të zgjidhni përgjigjen time dhe ta mbyllni këtë temë. :) 15.12.2014

  • 2

    Nëse jeni duke programuar për Windows, mund të përdorni GDIPlus për të lexuar lloje të imazheve Jpeg dhe të tjera dhe funksionon me to, për shembull vizatimi ose marrja e pikselave të tyre. Garancia 100%. E kam bërë shumë herë.

    Çfarë duhet të përfshijë:

    #include <gdiplus.h>
    #pragma comment(lib,"gdiplus.lib")
    

    Çfarë duhet të bëni në kodin:

    // initialize gdiplus
    Gdiplus::GdiplusStartupInput si;
    ULONG_PTR token;
    Gdiplus::GdiplusStartup(&token,&si,0);
    
    // load image, any formats supported
    Gdiplus::Bitmap image(L"C:\\image.jpg",false);
    int w = image.GetWidth();
    // image.LockBits - to read pixels
    
    15.12.2014
  • faleminderit per sugjerimin. megjithatë, po marr një gabim për ta përfshirë atë. e përfshiva si GDIplus.h dhe gdiplus.h 15.12.2014
  • te besoj. Unë kam ende një gabim në leximin e gdiplus: nuk u gjet asnjë skedar ose drejtori i tillë. Unë besoj se është diçka që po bëj ose softueri që po përdor. Unë jam duke përdorur dev c++ me një laptop Windows 7. Unë do të postoj shembullin tuaj të plotë në mënyrë që të shihni se çfarë kam bërë gabim. përsëri faleminderit shumë 15.12.2014
  • Thjesht përdorni: Microsoft Visual Studio Express 2012, dhe gjithçka do të jetë në rregull ☻☻☻, është IDE shumë e lezetshme. 15.12.2014
  • thjesht mos e shkarkoni versionin 2013! është për Win8! 15.12.2014
  • oops, versioni 2013 jo i keq, por vetëm nëse keni nevojë për programim për Windows. Më falni, jam ngatërruar me versionin 2015. 15.12.2014
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..