##質問内容
以下のサイト内にある
C++
1cv::Vec3b &pixel = dst.at<cv::Vec3b>(y, x);
で,なぜ,『&』が記述されているのでしょうか?
その次の文では,pixelの前に『&』が記述されていないです.
C++
1pixel = colors[label];
もし,分かる方がいましたら,回答して頂けると助かります.
よろしくお願いいたします.
###参考サイト
####コード
C++
1int main() 2{ 3Mat src = imread("G:\yama\sidba\text.bmp"); 4 5Mat gray, binimg, labimg; 6 7 8imshow("Input image", src); 9 10 11cvtColor(src, gray, COLOR_BGR2GRAY); //入力画像をグレースケール化 12 13 14threshold(gray, binimg, 127, 255, THRESH_BINARY); //2値化処理 15 16 17dilate(binimg, binimg, noArray(), Point(-1, -1), 2); //2値化した画像に2回Dilate処 18理 19 20 21imshow("Binary-Dilate Image", binimg); 22 23 24int nLabs = connectedComponents(binimg, labimg, 8, CV_32S); //ラベリング処理 25 26 27// ラベリング結果の描画色を決定 28vector<Vec3b> colors(nLabs); 29 30colors[0] = Vec3b(0, 0, 0); 31 32for (int label = 1; label < nLabs; ++label) { 33 34//ラベル番号に対して色をランダムに割り当てる 35colors[label] = Vec3b((rand() & 255), (rand() & 255), (rand() & 255)); 36} 37 38 39// ラベリング結果の描画 40Mat dst(src.size(), CV_8UC3); 41 42for (int y = 0; y < dst.rows; ++y) { 43for (int x = 0; x < dst.cols; ++x) { 44 45//ラベリング画像の(x,y)上のラベル番号を抽出 46int label = labimg.at<int>(y, x); 47 48 49//ラベル番号に割り当てられた色(画素値)を結果画像の(x,y)に格納する 50cv::Vec3b &pixel = dst.at<cv::Vec3b>(y, x); 51 52pixel = colors[label]; 53} 54} 55 56 57 58imshow("Labeling Image", dst); 59waitKey(); 60 61 62return 0; 63 64}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/30 02:50
2020/10/30 03:06