#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
Mat edges;
Canny(image, edges, 50, 150);
vector<Vec2f> lines;
HoughLines(edges, lines, 1, CV_PI / 180, 100);
for (size_t i = 0; i < lines.size(); i++)
{
float rho = lines[i][0], theta = lines[i][1];
if (theta > CV_PI / 180 * 80 && theta < CV_PI / 180 * 100)
{
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a * rho, y0 = b * rho;
pt1.x = cvRound(x0 + 1000 * (-b));
pt1.y = cvRound(y0 + 1000 * (a));
pt2.x = cvRound(x0 - 1000 * (-b));
pt2.y = cvRound(y0 - 1000 * (a));
line(image, pt1, pt2, Scalar(0, 0, 255), 3, LINE_AA);
cout << "Line coordinates: (" << pt1.x << ", " << pt1.y << ") - (" << pt2.x << ", " << pt2.y << ")" << endl;
}
}
imshow("Image", image);
waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("noisy_image.jpg");
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
Mat blur;
GaussianBlur(gray, blur, Size(5, 5), 0);
Mat binary;
threshold(blur, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
Mat result;
morphologyEx(binary, result, MORPH_OPEN, kernel);
imshow("Original Image", image);
imshow("Processed Image", result);
waitKey(0);
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
vector<int> findContinuousNumbers(vector<int>& nums, int n, int target) {
vector<int> res;
int left = 0, right = 0, count = 0;
while (right < nums.size()) {
if (nums[right] > target) {
count++;
}
while (count >= n) {
if (nums[left] > target) {
count--;
}
left++;
}
if (right - left + 1 == n && count < n) {
res.push_back(left);
}
right++;
}
return res;
}
int main() {
vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 3, target = 5;
vector<int> res = findContinuousNumbers(nums, n, target);
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " ";
}
cout << endl;
return 0;
}
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
int Special_Value = 128;
int N = 5;
vector<int> row_values;
for (int i = 0; i < image.rows; i++)
{
Mat row = image.row(i);
row_values.clear();
for (int j = 0; j < row.cols; j++)
{
row_values.push_back(row.at<uchar>(j));
}
for (int j = 0; j < row_values.size() - N + 1; j++)
{
bool flag = true;
for (int k = j; k < j + N; k++)
{
if (row_values[k] != Special_Value)
{
flag = false;
break;
}
}
if (flag)
{
cout << "Row: " << i << ", Start: " << j << ", End: " << j + N - 1 << endl;
}
}
}
return 0;
}
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
int rows = image.rows;
int cols = image.cols;
int* grayValues = new int[rows];
for (int i = 0; i < rows; i++) {
int sum = 0;
for (int j = 0; j < cols; j++) {
sum += image.at<uchar>(i, j);
}
grayValues[i] = sum / cols;
}
int N = 10;
int Special_Value = 128;
int start = -1;
int end = -1;
for (int i = 0; i < rows; i++) {
int count = 0;
for (int j = 0; j < cols; j++) {
if (image.at<uchar>(i, j) == Special_Value) {
count++;
if (count == N && start == -1) {
start = j - N + 1;
}
if (count == N) {
end = j;
}
} else {
count = 0;
start = -1;
end = -1;
}
}
if (start != -1 && end != -1) {
std::cout << "start: (" << i << ", " << start << ")" << std::endl;
std::cout << "end: (" << i << ", " << end << ")" << std::endl;
start = -1;
end = -1;
}
}
return 0;
}
#include <opencv2/opencv.hpp>
int main() {
cv::Mat image = cv::imread("your_image_path");
cv::Mat grayImage;
cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);
int rows = grayImage.rows;
int cols = grayImage.cols;
int* rowValues = new int[rows];
for (int i = 0; i < rows; i++) {
int sum = 0;
for (int j = 0; j < cols; j++) {
sum += grayImage.at<uchar>(i, j);
}
rowValues[i] = sum / cols;
}
int N = 10;
int Special_Value = 128;
int start = -1;
int end = -1;
for (int i = 0; i < rows; i++) {
int count = 0;
for (int j = 0; j < cols; j++) {
if (grayImage.at<uchar>(i, j) == Special_Value) {
count++;
if (count == N && start == -1) {
start = j - N + 1;
}
if (count > N) {
end = j;
break;
}
} else {
count = 0;
start = -1;
}
}
if (end != -1) {
break;
}
}
for (int i = 0; i < rows; i++) {
if (start != -1 && end != -1) {
cv::line(image, cv::Point(start, i), cv::Point(end, i), cv::Scalar(0, 0, 255), 2);
}
}
delete[] rowValues;
cv::imshow("result", image);
cv::waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("image.jpg", IMREAD_GRAYSCALE);
int N = 10;
int V = 128;
int row_gray[img.rows];
for (int i = 0; i < img.rows; i++)
{
uchar* p = img.ptr<uchar>(i);
int gray_sum = 0;
for (int j = 0; j < img.cols; j++)
{
gray_sum += p[j];
}
row_gray[i] = gray_sum / img.cols;
int start = -1, end = -1;
for (int j = 0; j < img.cols; j++)
{
if (p[j] == V)
{
if (start == -1)
{
start = j;
}
if (j == img.cols - 1 && j - start + 1 >= N)
{
end = j;
}
}
else
{
if (start != -1 && j - start >= N)
{
end = j - 1;
break;
}
start = -1;
}
}
if (start != -1 && end != -1)
{
line(img, Point(start, i), Point(end, i), Scalar(255, 0, 0), 2);
}
}
imshow("Image", img);
waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
int main() {
cv::Mat image = cv::imread("image.jpg");
cv::Mat grayImage;
cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);
int rows = grayImage.rows;
int cols = grayImage.cols;
int* grayValues = new int[rows * cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
grayValues[i * cols + j] = grayImage.at<uchar>(i, j);
}
}
int V = 128;
int N = 10;
int M = 50;
for (int i = 0; i < rows; i++) {
int start = -1;
int end = -1;
int count = 0;
for (int j = 0; j < cols; j++) {
if (grayValues[i * cols + j] == V) {
if (start == -1) {
start = j;
}
count++;
} else {
if (count > N && count < M) {
end = j - 1;
cv::line(image, cv::Point(start, i), cv::Point(end, i), cv::Scalar(0, 0, 255), 2);
}
start = -1;
count = 0;
}
}
if (count > N && count < M) {
end = cols - 1;
cv::line(image, cv::Point(start, i), cv::Point(end, i), cv::Scalar(0, 0, 255), 2);
}
}
cv::imshow("Image", image);
cv::waitKey(0);
delete[] grayValues;
return 0;
}