Anonymous
Реализация оператора Собеля
Сообщение
Anonymous » 11 окт 2024, 03:06
Я пытаюсь реализовать оператор sobel как в горизонтальном, так и в вертикальном направлении. Но почему-то я получаю обратный результат. Код, который я приложил ниже. Для горизонтальной маски
Код: Выделить всё
char mask [3][3]= {{-1,-2,-1},{0,0,0},{1,2,1}};
void masking(Mat image){
Mat temImage= image.clone();
for (int i = 1; i < image.rows-1; i++)
{
for (int j = 1; j < image.cols-1; j++)
{
for(int k=0;k 255)
sum = 255;
temImage.at(i,j)[k] = sum;
}
}
}
//printf("conter = %d",counter);
imshow( "Display", temImage );
imwrite("output1.png",temImage);
Я получаю результат как
где что касается вертикальная маска
Код: Выделить всё
char mask [3][3]= {{-1,0,1},{-2,0,2},{-1,0,1}};
void masking(Mat image){
Mat temImage= image.clone();
for (int i = 1; i < image.rows-1; i++)
{
for (int j = 1; j < image.cols-1; j++)
{
for(int k=0;k 255)
sum = 255;
temImage.at(i,j)[k] = sum;
}
}
}
//printf("conter = %d",counter);
imshow( "Display", temImage );
imwrite("output1.png",temImage);
Я получаю вывод как
Основная функция прилагается ниже
Код: Выделить всё
int main( int argc, char** argv ){
Mat input_image = imread("sobel1.jpg",1);
masking(input_image);
waitKey(0);
return 0;
Согласно руководству
https://www.tutorialspoint.com/dip/sobel_operator.htm Я должен получить обратный вывод. Может ли кто-нибудь мне в этом помочь?
Исходное изображение:
Подробнее здесь:
https://stackoverflow.com/questions/458 ... l-operator
1728605211
Anonymous
Я пытаюсь реализовать оператор sobel как в горизонтальном, так и в вертикальном направлении. Но почему-то я получаю обратный результат. Код, который я приложил ниже. Для горизонтальной маски [code]char mask [3][3]= {{-1,-2,-1},{0,0,0},{1,2,1}}; void masking(Mat image){ Mat temImage= image.clone(); for (int i = 1; i < image.rows-1; i++) { for (int j = 1; j < image.cols-1; j++) { for(int k=0;k 255) sum = 255; temImage.at(i,j)[k] = sum; } } } //printf("conter = %d",counter); imshow( "Display", temImage ); imwrite("output1.png",temImage); [/code] Я получаю результат как [img]https://i.sstatic.net/KaaAL.png[/img] где что касается вертикальная маска [code]char mask [3][3]= {{-1,0,1},{-2,0,2},{-1,0,1}}; void masking(Mat image){ Mat temImage= image.clone(); for (int i = 1; i < image.rows-1; i++) { for (int j = 1; j < image.cols-1; j++) { for(int k=0;k 255) sum = 255; temImage.at(i,j)[k] = sum; } } } //printf("conter = %d",counter); imshow( "Display", temImage ); imwrite("output1.png",temImage); [/code] Я получаю вывод как [img]https://i.sstatic.net/PzVUB.png[/img] Основная функция прилагается ниже [code]int main( int argc, char** argv ){ Mat input_image = imread("sobel1.jpg",1); masking(input_image); waitKey(0); return 0; [/code] Согласно руководству https://www.tutorialspoint.com/dip/sobel_operator.htm Я должен получить обратный вывод. Может ли кто-нибудь мне в этом помочь? Исходное изображение: [img]https://i.sstatic.net/z1m8A.jpg[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/45832629/implementing-sobel-operator[/url]