用c++代码的opencv写一段输入图片对它二值化并遍历每行每列的像素点得到跳变点坐标并标红
时间: 2023-04-12 22:01:15 浏览: 176
以下是代码示例:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图片
Mat img = imread(argv[1], IMREAD_GRAYSCALE);
if (img.empty())
{
cout << "Could not read the image: " << argv[1] << endl;
return 1;
}
// 二值化
Mat binary;
threshold(img, binary, 128, 255, THRESH_BINARY);
// 遍历每行每列的像素点
for (int i = 0; i < binary.rows; i++)
{
for (int j = 0; j < binary.cols; j++)
{
// 判断是否为跳变点
if (j == 0 || j == binary.cols - 1 || binary.at<uchar>(i, j) != binary.at<uchar>(i, j - 1))
{
// 标红跳变点
binary.at<uchar>(i, j) = 0;
binary.at<Vec3b>(i, j)[0] = 0;
binary.at<Vec3b>(i, j)[1] = 0;
binary.at<Vec3b>(i, j)[2] = 255;
}
}
}
// 显示结果
imshow("Binary Image", binary);
waitKey(0);
return 0;
}
```
这段代码可以实现输入图片的二值化,并遍历每行每列的像素点,找到跳变点并标红。
阅读全文