Я пытаюсь сохранить положение черных пикселей исходного изображения в градациях серого, а затем хочу нарисовать его в измененной версии изображения в градациях серого. И мой код здесь:
std::vector< std::vector <cv::Point> > Black_Pixel;
for(int y = 0; y < Original_Image.rows; y++)
{
for(int x = 0; x < Original_Image.cols; x++)
{
if (Original_Image.at<unsigned char>(x,y) == 0 )
{
Black_Pixel[0].push_back(cv::Point(x,y));
Black_Pixel.push_back( std::vector <cv::Point>());
}
}
}
for( unsigned int idx = 0; idx < Black_Pixel.size(); idx++ )
{
New_image.at<unsigned char>(Black_Pixel[0][idx].x,Black_Pixel[0][idx].y) = 0;
cv::waitKey();
}
Попробуй это:
row.push_back (резюме :: Point (х, у));
На самом деле, уберите строку и вместо этого:
Black_Pixel[0].push_back(cv::Point(x,y));
конечно сначала нужно инициализировать 0-й элемент в Black_Pixel:
Black_Pixel.push_back(std::vector<cv::Point>);
std::vector <cv::Point> Black_Pixel;
for(int y = 0; y < Original_Image.cols; y++)
{
for(int x = 0; x < Original_Image.rows; x++)
{
if (Original_Image.at<unsigned char>(x,y) == 0 )
{
Black_Pixel.push_back(cv::Point(x,y));
}
}
}
for( unsigned int idx = 0; idx < Black_Pixel.size(); idx++ )
{
New_image.at<unsigned char>(Black_Pixel[idx]) = 0;
}
cv::imshow("New Image", New_image);