在我的程序中,我有从摄像机获取图像的功能,应该将所有数据打包在OpenCV Mat结构中.从相机我得到宽度,高度和unsigned char*图像缓冲区.如果我有全局Mat变量,我的问题是如何从这些数据创建Mat.Mat结构的类型我采用了CV_8UC1.
Mat image_;
function takePhoto() {
unsigned int width = getWidthOfPhoto();
unsinged int height = getHeightOfPhoto();
unsinged char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
printf("width: %u\n", image.size().width);
printf("height: %u\n", image.size().height);
image_.create(Size(image.size().width, image.size().height), CV_8UC1);
image_ = image.clone();
printf("width: %u\n", image_.size().width);
printf("height: %u\n", image_.size().height);
}
Run Code Online (Sandbox Code Playgroud)
当我测试的程序,我马上width和height的image,但width和height我的全球垫image_是0.我如何Mat正确地将数据放入我的全局变量中?
谢谢.
我有以下代码的问题:
message is vector<unsigned char>
vector<unsigned char>::iterator pos = message.begin();
vector<unsigned char>::iterator start = message.begin();
vector<unsigned char>::iterator end = message.end();
pos = find(start, end, ' ');
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
error: no matching function for call to ‘find(std::vector<unsigned char>::iterator&, std::vector<unsigned char>::iterator&, char)’
Run Code Online (Sandbox Code Playgroud) 我想" "在我的身上找到空的空格vector<unsigned char> message
vector<unsigned char>::iterator pos;
pos = find(message.begin(), message.end(), " ");
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
/usr/include/c++/4.5/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char> >, _Tp = char [2]]’:
/usr/include/c++/4.5/bits/stl_algo.h:4209:45: instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char> >, _Tp = char [2]]’
../source/InveritasServer.cpp:107:49: instantiated from here
/usr/include/c++/4.5/bits/stl_algo.h:158:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:4209:45: instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) …Run Code Online (Sandbox Code Playgroud) 我将double值复制到unsigned char的向量.它将是我的socket缓冲区,它应该包含不同类型的值.我想测试应对是否正常.我写了一个小代码.
vector<unsigned char> buffer(8);
double doubleValue_1 = 8.0;
memcpy(&buffer[0], &doubleValue_1, sizeof( doubleValue_1));
bitset<64>bitset_1(doubleValue_1);
cout << "doubleValue_1: " << bitset_1 << endl;
cout << "buffer: ";
for (int i = 0; i < buffer.size(); i++) {
bitset<8>bitset_v(buffer.at(i));
cout << bitset_v;
}
cout << endl << endl;
double doubleValue_2;
memcpy(&doubleValue_2, &buffer[0], sizeof(doubleValue_2));
bitset<64>bitset_2(doubleValue_2);
cout << "doubleValue_2: " << bitset_2 << endl;
Run Code Online (Sandbox Code Playgroud)
我得到了输出:
doubleValue_1: 0000000000000000000000000000000000000000000000000000000000001000
buffer: 0000000000000000000000000000000000000000000000000010000001000000
doubleValue_2: 0000000000000000000000000000000000000000000000000000000000001000
Run Code Online (Sandbox Code Playgroud)
你怎么看,第一个doubleValue_1代表8.0.比我把这个值复制到矢量.并且输出不等于前一个.但是当我从向量处理字节到双向后,我在doubleValue_2中得到的值与doubleValue_1中的值相同.我的问题是,为什么向量的输出不同于双倍?也许我以错误的方式打印出矢量.你能建议我怎么做才能正确吗?非常感谢.
我在Linux下使用C++编写套接字.我有个问题.如何判断客户端是否关闭了连接.
特别是在服务器接受客户端并开始等待客户端的某些数据的情况下.但客户端不发送任何内容,只关闭与服务器的连接.在这种情况下,我的服务器正在等待一些数据.
这是我的程序示例:
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
Run Code Online (Sandbox Code Playgroud)
我的服务器上也有几个插座.我需要知道客户端关闭连接的哪个套接字.
我正在用C++编写一个程序.在我的程序中,我需要在一个函数内创建一个动态大小的数组,但是这个数组也应该可以访问其他函数.我不会在这里发布我的代码,只写一个虚拟示例.
char *array;
void function_1() {
array = new char(3);
array[0] = "value 1";
array[1] = "value 2";
array[2] = "value 3";
}
void function_2() {
array[0] = "new value 1";
}
int main() {
function_1();
function_2();
delete[] array;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我不确定,如果数组将存在于function_1之外,它初始化,直到我分配数组的内存.或者数组在一个函数中只有一个局部变量的行为.这意味着,存储数组值的内存将在函数完成后被解除定位,并且我的数组的内存地址可以在我的程序中稍后重新编译.
谢谢.
你好
目前我正在寻找一个好的C++编码标准,我可以坚持下去.在互联网上,我可以找到很多编码标准.一些规则在大多数规则中很常见.但也存在差异.我找到了Todd Hoff的C++编码标准(http://www.maultech.com/chrislott/resources/cstyle/CppCodingStandard.html).我看了看,发现它真的很棒.他不仅给出了一些共同的规则,而且还详细介绍了这些规则.名称公约就是一个好例子.
我想知道,如果有人使用这个C++编码标准,他会建议使用它吗?