C++ C++;程序挂起imshow命令
我有一些C++代码,由于某种原因一直挂着。 代码如下:C++ C++;程序挂起imshow命令,c++,opencv,imshow,C++,Opencv,Imshow,我有一些C++代码,由于某种原因一直挂着。 代码如下: using namespace std; using namespace cv; int main(int argc, char** argv) { cout <<"started"; Mat im(256, 256, CV_8UC1, cv::Scalar(255)); for (int j = 0; j < 255; j++) { for (int k = 0; k < 255; k++) {
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
cout <<"started";
Mat im(256, 256, CV_8UC1, cv::Scalar(255));
for (int j = 0; j < 255; j++) {
for (int k = 0; k < 255; k++) {
if (k > j) {
cv::Mat black(im, cv::Rect(j, k, 1, 1));
black = cv::Scalar(0, 0, 0);
}
}
}
Mat image2;
//cvtColor(image, image2, CV_BGR2GRAY);
cout<<"started";
imshow("", im);
waitKey(0);
return 0;
}
使用名称空间std;
使用名称空间cv;
int main(int argc,字符**argv){
试试这个。它对我很有效,而且符合你所描述的
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
using namespace std;
using namespace cv;
int main(int argc, char *argv[]) {
Mat image(256, 256, CV_8UC1, Scalar(255));
for (int j = 0; j < 256; j++) { //index goes to < 256, not < 255
for (int k = j + 1; k < 256; k++) { //start loop at j + 1 to eliminate if (k > j) test
Mat black(image, Rect(j, k, 1, 1));
black = Scalar(0); //only one value in Scalar since this is a single-channel image
}
}
cv::imshow("", image);
// wait for key
cv::waitKey(0);
return 0;
}
#包括
#包括“opencv2/core.hpp”
#包括“opencv2/highgui.hpp”
使用名称空间std;
使用名称空间cv;
int main(int argc,char*argv[]){
Mat图像(256,256,CV_8UC1,标量(255));
对于(intj=0;j<256;j++){//索引转到<256,而不是<255
对于(int k=j+1;k<256;k++){//在j+1处开始循环以消除if(k>j)测试
Mat-black(图像,Rect(j,k,1,1));
黑色=标量(0);//标量中只有一个值,因为这是单通道图像
}
}
cv::imshow(“,图像);
//等钥匙
cv::waitKey(0);
返回0;
}
我做了一些小改动:
- 循环索引测试应该是
<256
,而不是<255
,除非您特别不想修改最后一行或最后一列
- 您可以使用
int k=j+1
启动内部循环,以避免不必要的循环迭代和if(k>j)
测试
- 您正在将
black
设置为三通道标量值。当我将其更改为Scalar(0,0,0)
时,我的标量值仍然有效,但您仍然不应该这样做
我尝试了你的代码,它也能工作。你没有提到你正在运行的操作系统。我正在运行操作系统X。我在你的代码中没有看到imshow命令?我也在想同样的事情。可能重复的代码有几个问题。你到底想做什么?你能解释一下算法吗?你试过把一个非空字符串作为imshow中的窗口名称?我逐字复制粘贴了您的代码,=>仍然存在相同的问题。我的操作系统是Ubuntu 15.10是否有可能显示窗口但不可见?我曾经遇到过OpenCV窗口出现在另一个窗口后面的情况。或者可能您在某个点连接了第二个监视器,并在那里显示它。没有。没有第二个监视器和不,窗口也不是不可见的。不确定还有什么建议。代码是正确的,因此它必须与您的系统配置有关。