2017-03-22 5 views
0

Ich habe ein Bild. Ich möchte das Bild so verändern, dass der Wert jedes Pixels um einen bestimmten Abstand erhöht wird. Als nächstes möchte ich das neu erstellte Bild speichern und anzeigen.Erhöhen Sie den Wert jedes Pixels eines Bildes

Ich habe versucht, jeden Pixelwert zu ändern, konnte ihn aber nur auf einen konstanten Wert setzen. Ich will nicht alle Pixel konstant sein, aber ihren Wert erhöhen sollte (sagen wir mal) 50.

#include <iostream> 
#include "opencv2/highgui/highgui.hpp" 

using namespace std; 
using namespace cv; 

int main() 
{ 
    Mat image; 
    image = imread("/home/rohit_136/Desktop/image.jpg",CV_LOAD_IMAGE_UNCHANGED); 
    for (int i = 0; i < image.cols; i++) { 
    for (int j = 0; j < image.rows; j++) { 
     Vec3b intensity = image.at<Vec3b>(j, i)=50 
    } 
    } 
    return 0; 
} 
+0

Der von Ihnen geschriebene Code wird nicht kompiliert. Versuchen Sie beim Veröffentlichen von Code, den tatsächlichen Code zu veröffentlichen. – Yakk

Antwort

0

Vec3b ist ein Vektor, der drei Bytes (Zeichen) enthält. Jedes Byte bezeichnet den Wert eines einzelnen BGR-Kanals (blau, grün, rot) oder RGB. Sie sollten diesen Vektor durchlaufen und jeden Kanal unabhängig ändern. Seien Sie vorsichtig, da wir über Bytes sprechen, sollte jedes Byte einen Wert zwischen 0 und 255 annehmen. Ich schlage vor, einen Schwellenwert zu setzen, um Überlauf zu vermeiden.

Hinweis: Wenn Ihnen der Alphakanal egal ist, empfehle ich, Ihr Bild mit CV_LOAD_IMAGE_COLOR zu laden. Dadurch wird sichergestellt, dass Ihr Bild im BGR-Format geladen wird.

Verwandte Themen