我刚开始使用 Open CV 库,我的第一个代码之一是一个简单的负变换函数。
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void negative(Mat& input,Mat& output)
{
int row = input.rows;
int col = input.cols;
int x,y;
uchar *input_data=input.data;
uchar *output_data= output.data;
for( x=0;x<row;x++)
for( y=0;y<col;y++)
output_data[x*col+y]=255-input_data[x*col+y];
cout<<x<<y;
}
int main( int argc, char** argv )
{
Mat image;
image = imread( argv[1], 1 );
Mat output=image.clone();
negative(image,output);
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", output );
waitKey(0);
return 0;
}
我添加了额外的行来检查是否处理了整个图像。我的输出图像面临的问题是负变换仅应用于图像的上半部分。
现在发生的情况是 x 和 y 的值仅在我按下一个键后才显示(即一旦显示图像)
我的问题是为什么在执行函数之前调用窗口?