0
我對C++很新穎,但是,我嘗試創建一些鹽和胡椒的噪音。 它幾乎完成了,只是在我想要洗牌一系列整數,不管我做什麼,無論我使用什麼樣的隨機函數,我總是得到那個討厭的「從這裏需要」,它不告訴我任何東西。 這裏是我的代碼:C++ - shuffle:從這裏需要
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <random>
#include <algorithm>
#include <iterator>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
cv::Mat m(256, 256, CV_8UC1, cv::Scalar(255));
// Print it
// int counter = 0;
unsigned int range = 255 - 0 + 1;
int num = rand() % range ;
int x[256];
for (int i = 0; i<256; i++){
x[i]= i;
}
srand(17);
auto engine = std::default_random_engine{};
shuffle(x[0], x[255], engine);
int coord[256][256];
for (int t= 0; t<256; t++){
coord[t][t] = x[t];
}
for (int j = 0; j<256; j++){
for (int k = 0; 0<256; k++)
{if (coord[j][k]<=num){
cv::Mat black(m, cv::Rect(j, k, 1, 1));
black = cv::Scalar(0, 0, 0);
}
}
}
// Create a named window
cv::namedWindow("Test", cv::WINDOW_AUTOSIZE);
// Display
imshow("Test", m);
// Wait until a key is pressed
cv::waitKey(0);
return 0;
};
我得到這個錯誤似乎是由這一行造成的:
shuffle(x[0], x[255], engine);
現在,我很高興地給予完整的編譯器的文本,但有些線路是這樣長期以來,不可能做必要的縮進,我試過了。 有沒有人有解決方法?
對於未來,請提供[MCVE],其中在*最小強調*。這個問題與opencv和那些循環完全無關。 –
另外'srand'不會給你的'std :: default_random_engine'播種,這是你期待的。閱讀[doc](http://en.cppreference.com/w/cpp/numeric/random)。 –