opencvで特定の座標を指定しその座標の色変換
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
/* グローバル変数 */
CvFont font;
IplImage *img;
int num1=0;
int num2=0;
int num3=0;
int num4=0;
/* プロトタイプ宣言 */
void on_trackbar1 (int val1);
void on_trackbar2 (int val2);
void on_trackbar3 (int val3);
void on_trackbar4 (int val4);
int main (int argc, char *argv[])
{
img = cvLoadImage ( "bgr.jpg", CV_LOAD_IMAGE_COLOR);
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 1.0, 1.0);
cvNamedWindow ("Image", CV_WINDOW_AUTOSIZE);
cvCreateTrackbar ("X", "Image", 0, 255, on_trackbar1);
cvCreateTrackbar ("Y", "Image", 0, 255, on_trackbar2);
cvCreateTrackbar ("COLOR", "Image", 0, 255, on_trackbar3);
cvCreateTrackbar ("-", "Image", 0, 100, on_trackbar4);
cvShowImage ("Image", img);
int x,y;
uchar p[3];
for (y = 0; y < img->height; y++) {
for (x = 0; x < img->width; x++) {
p[0] =((uchar*)(img->imageData + img->widthStep*num2))[num1*3]; // B
p[1] =((uchar*)(img->imageData + img->widthStep*num2))[num1*3+1]; // G
p[2] =((uchar*)(img->imageData + img->widthStep*num2))[num1*3+2]; // R
p[0] = num3;
p[1] = num3;
p[2] = num3;
}
}
cvWaitKey (0);
cvDestroyWindow ("Image");
cvReleaseImage (&img);
return 0;
}
/* コールバック関数 */
void on_trackbar1 (int val1)
{
num1 = val1;
char str[64];
printf ( "X=%d Y=%d C=%d -=%d\n", val1, num2, num3, num4);
}
void on_trackbar2 (int val2)
{
num2 = val2;
char str [64];
printf ( "X=%d Y=%d C=%d -=%d\n", num1, val2, num3, num4);
}
void on_trackbar3 (int val3)
{
num3 = val3;
char str [64];
printf ( "X=%d Y=%d C=%d -=%d\n", num1, num2, val3, num4);
}
void on_trackbar4 (int val4)
{
num4 = val4;
char str [64];
printf ( "X=%d Y=%d C=%d -=%d\n", num1, num2, num3, val4);
}
このプログラムで特定の座標の色変換をしたいのですがうまくいきません。
トラックバー1でX座標
トラックバー2でY座標
トラックバー3で変更後の色
を指定します。
実行すると画像は表示されますがトラックバーを動かしても変化がありません。トラックバーを動かした時にmain関数に戻れば良いと思い、思いつく限り試しましたが上手くいきません。
どなたかアドバイスお願いします。
お礼
すみません。BCC devです。 エラーは 'CarNavi::add(int,int)' はアクセスできない(関数 main() ) と出ます。