這是我如何的公式產生的數據點繪製簡單的函數:嘗試使用OpenCV的C++
struct Sine_point {
double x;
double y;
};
Sine_point graph[2000];
for(int i = 0; i < 2000; i++) {
float x = (i - 1000.0)/100.0;
graph[i].x = x;
graph[i].y = sin(x * 10.0)/(1.0 + x * x);
cout<<graph[i].x<<graph[i].y<<endl;
}
現在我要繪製基於這些點的圖形。什麼到目前爲止,我已經試過是繪製一條直線的程序:
#include <vector>
#include "opencv2/highgui/highgui.hpp"
#include <opencv\cv.h>
#include <iostream>
#include<conio.h>
using namespace cv;
using namespace std;
int main()
{
std::vector<char> dataPtr(40000, 200);
cv::Point p1(0,0);
cv::Point p2(200, 200);
cv::Size size(200,200);
cv::Mat image(size, CV_8U, &(dataPtr[0]));
if (image.empty()) //check whether the image is valid or not
{
cout << "Error : Image cannot be created..!!" << endl;
system("pause"); //wait for a key press
return -1;
}
cv::line(image, p1, p2, 'r', 5, 8, 0);
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"
imshow("MyWindow", image); //display the image which is stored in the 'img' in the "MyWindow" window
waitKey(0); //wait infinite time for a keypress
destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"
return 0;
}
它使用CV:線,連接我公司提供的終點。但是如何繼續我的功能數據呢?
更新
這裏是我怎麼現在這樣做:
int main()
{
std::vector<char> dataPtr(40000, 200);
cv::Size s(200,200);
cv::Mat image(s, CV_8U, &(dataPtr[0]));
if (image.empty()) //check whether the image is valid or not
{
cout << "Error : Image cannot be created..!!" << endl;
system("pause"); //wait for a key press
return -1;
}
struct Sine_point {
double x;
double y;
};
Sine_point graph[2000];
for(int i = 0; i < 2000; i++) {
float x = (i - 1000.0)/100.0;
graph[i].x = x;
graph[i].y = sin(x * 10.0)/(1.0 + x * x);
cv::Point p1(graph[i].x,graph[i].y);
cv::Point p2(graph[i+1].x, graph[i+1].y);
cv::line(image, p1, p2, Scalar(0,0,255), 5, 8, 0);
}
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"
imshow("MyWindow", image); //display the image which is stored in the 'img' in the "MyWindow" window
waitKey(0); //wait infinite time for a keypress
destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"
return 0;
}
但現在我越來越空白圖像。
可以了'graph'陣列從'i'畫線'我在簡單地重複+ 1',其中'i'從零到N-2,N = 2000。 –
cv :: line(image,p1,p2,Scalar(0,0,255),5,8,0); // b,g,r值 – berak
@berak我有空白圖片。請看我的更新。 – user2799508