我是OpenCV的新手。我試圖創建一個隨機的彩色圖像。首先,我試圖創建一個隨機灰度圖像。我已附加以下在OpenCV中創建隨機彩色圖像
void random_colour(Mat input_image) {
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++)
image.at<uchar>(i,j)= rand()%255;
imwrite("output.tif",image);
}
int main(int argc, char** argv)
{
Mat img=Mat::zeros(100,100,CV_8UC1);
random_colour(img);
waitKey(0);
return 0;
}
代碼得到的輸出是
現在我改變上面的代碼創建隨機彩色圖像。
void random_colour(Mat input_image) {
for (int i = 0; i < image.rows; i++)
{
for (int j = 0; j < image.cols; j++)
{
image.at<Vec3b>(i,j)[0] = rand()%255;
image.at<Vec3b>(i,j)[1] = rand()%255;
image.at<Vec3b>(i,j)[2] = rand()%255;
}
}
imwrite("output.tif",image);
}
主要功能保持不變。雖然這樣做,我得到一個運行時錯誤。請幫我做我該做什麼。我所理解的是,色彩空間中的每個像素都有三個分量RGB。因此,我正在改變每個像素的所有三個組件。我沒有得到我想要的輸出。
爲什麼不使用['CV :: randu'(http://docs.opencv.org/2.4/modules /core/doc/operations_on_arrays.html#randu)?例如'cv :: randu(image,0,256);'| 「主要功能保持不變。」 - 在這種情況下,您創建一個1通道圖像,然後嘗試訪問它,就好像它是3通道圖像一樣。 –
你得到什麼錯誤?請發佈錯誤追蹤,以便我們提供幫助。另外,就我所知,OpenCV處理'BGR'值而不是'RGB',要小心。 – DarkCygnus