對行列及矩陣的瞭解
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
argv[1] = "F:\\Openfile\\Open_file\\open1\\01.jpg";
Mat image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
cout << "圖片讀取失敗!" << endl;
return -1;
}
namedWindow("原圖", CV_WINDOW_NORMAL);
namedWindow("下雪圖", CV_WINDOW_NORMAL);
//雪點數
int i = 600;
for (int k = 0; k < i; k++)
{
int i = rand() % image.cols;
int j = rand() % image.rows;
if (image.channels() == 1)
{
image.at<uchar>(j, i) = 255;
if (i < (int)image.cols)
image.at<uchar>(j + 1, i) = 255;
if (j < (int)image.rows)
image.at<uchar>(j, i + 1) = 255;
if (i < (int)image.cols&&j < (int)image.rows)
image.at<uchar>(j + 1, i + 1) = 255;
}
else if (image.channels() == 3)
{
image.at<cv::Vec3b>(j, i)[0] = 255;
image.at<cv::Vec3b>(j, i)[1] = 255;
image.at<cv::Vec3b>(j, i)[2] = 255;
if (i < (int)image.cols - 1)
{
image.at<cv::Vec3b>(j, i + 1)[0] = 255;
image.at<cv::Vec3b>(j, i + 1)[1] = 255;
image.at<cv::Vec3b>(j, i + 1)[2] = 255;
}
if (j < (int)image.rows - 1)
{
image.at<cv::Vec3b>(j + 1, i)[0] = 255;
image.at<cv::Vec3b>(j + 1, i)[1] = 255;
image.at<cv::Vec3b>(j + 1, i)[2] = 255;
}
if (j < (int)image.rows - 1 && i < (int)image.cols - 1)
{
image.at<cv::Vec3b>(j + 1, i + 1)[0] = 255;
image.at<cv::Vec3b>(j + 1, i + 1)[1] = 255;
image.at<cv::Vec3b>(j + 1, i + 1)[2] = 255;
}
}
}
//在窗口內顯示圖文件
imshow("下雪圖",image);
//窗口等待顯示按鍵
waitKey(0);
return 0;
}