Tôi muốn vẽ một làn sóng hình sin trên một hình ảnh bằng cách sử dụng openCV. Tôi đã phát triển mã sau, nhưng đầu ra không đến như mong đợi:vẽ sóng sin bằng cách sử dụng opencv
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "opencv/cv.h"
#include "opencv/highgui.h"
void main()
{
double y[100];
float x;
for(x=0;x<100;x++)
{
y[(int)floor(x)]=sin(x);
}
IplImage *grf = cvCreateImage(cvSize(200, 200), IPL_DEPTH_8U, 1);
for(int x=0;x<100;x++)
{
cvLine(grf , /* the dest image */
cvPoint(x, y[x]), /* start point */
cvPoint(x+1, y[x+1]), /* end point */
CV_RGB(255, 0, 0), /* the color; green */
2, 4, 0); /* thickness, line type, shift */
}
cvNamedWindow("img", CV_WINDOW_AUTOSIZE);
cvShowImage("img", grf);
cvWaitKey(0);
cvDestroyWindow("img");
cvReleaseImage(&grf);
}
Tôi đã xác minh các giá trị đến trong mảng y là chính xác và vẽ các giá trị y này bằng MATLAB. Các âm mưu MATLAB đang đến một làn sóng sin. Bạn có thể cho tôi biết lý do tại sao tôi không nhận được âm mưu chính xác bằng cách sử dụng mã trên.
Âm mưu đầu ra của sóng sin của tôi là như sau: bạn có thể thấy tôi chỉ nhận được một đường ngang thay vì sóng sin. Bất kỳ trợ giúp về điều này?
SOLVED: Sau khi làm theo câu trả lời tôi nhận được hình ảnh sau:
Cảm ơn
Hoàn hảo !! cảm ơn sự giúp đỡ nhanh chóng của bạn – geeta
@geeta Bạn được chào đón! – Alex
được sử dụng thay vào đó, y [(int) floor (x)] = 100 + 20 * sin (0.4 * .1 * PI * x) theo đề xuất của bạn; cốt truyện ở trên. Cảm ơn – geeta