i have set of 70 rgb images (argc=71). wanted change pixel values according these formulas:
l1 = (r-g)^2/((r-g)^2 + (r-b)^2 + (g-b)^2);
l2 = (r-b)^2/((r-g)^2 + (r-b)^2 + (g-b)^2);
l3 = (r-g)^2/((g-b)^2 + (r-b)^2 + (g-b)^2);
and store new images. code tried using c++ below keep getting error:
setpixels(99556,0x7fff76450000) malloc: * error object 0x10a9ce000: pointer being freed not allocated * set breakpoint in malloc_error_break debug
can me solve matter?
thanks in advance!
#include <highgui.h> #include <cv.h> #include <sstream> using namespace cv; using namespace std; int main(int agra, char** argv){ for(int k=1;k<=argc;k++){ char* imagename = argv[k]; mat image; image = imread(imagename,cv_load_image_unchanged); uchar l1; uchar l2; uchar l3; (int i=0; i<=image.rows;i++){ (int j=0; j<=image.cols; j++){ vec3b intensity = image.at<vec3b>(point(j, i)); uchar red = intensity.val[0]; int int_red = (int) red; uchar green = intensity.val[1]; int int_green = (int) green; uchar blue = intensity.val[2]; int int_blue = (int) blue; int int_l1 = pow((int_red-int_green),2)/(pow((int_red-int_green),2)+pow((int_red - int_blue),2)+pow((int_green-int_blue),2)); int int_l2 = pow((int_red-int_blue),2)/(pow((int_red-int_green),2)+pow((int_red - int_blue),2)+pow((int_green-int_blue),2)); int int_l3 = pow((int_green-int_blue),2)/(pow((int_red-int_green),2)+pow((int_red - int_blue),2)+pow((int_green-int_blue),2)); l1 = (uchar) int_l1; l2 = (uchar) int_l2; l3 = (uchar) int_l3; intensity.val[0] = l1; intensity.val[1] = l2; intensity.val[2] = l3; image.at<vec3b>(j,i)= intensity; } } stringstream ss; string name = "l1l2l3image_"; string type = ".jpg"; ss<<name<<(k)<<type; string filename = ss.str(); ss.str(""); imwrite(filename, image); } return 0; }
Comments
Post a Comment